emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/cdlatex d97ba0a51d 03/13: Create the basic structure for t


From: ELPA Syncer
Subject: [nongnu] elpa/cdlatex d97ba0a51d 03/13: Create the basic structure for the minor mode
Date: Sat, 12 Aug 2023 12:59:19 -0400 (EDT)

branch: elpa/cdlatex
commit d97ba0a51dc913c2871e0e80b940c562f593b13e
Author: Carsten Dominik <carsten.dominik@gmail.com>
Commit: Carsten Dominik <carsten.dominik@gmail.com>

    Create the basic structure for the minor mode
---
 electricindex.el | 2253 +-----------------------------------------------------
 1 file changed, 42 insertions(+), 2211 deletions(-)

diff --git a/electricindex.el b/electricindex.el
index 4c85b87c9d..46b6d61e16 100644
--- a/electricindex.el
+++ b/electricindex.el
@@ -1,4 +1,4 @@
-;;; cdlatex.el --- Fast input methods for LaTeX environments and math  -*- 
lexical-binding: t; -*-
+;;; electricindex.el --- Fast input methods for LaTeX environments and math  
-*- lexical-binding: t; -*-
 ;; Copyright (c) 2010-2022  Free Software Foundation, Inc.
 ;;
 ;; Author: Carsten Dominik <carsten.dominik@gmail.com>
@@ -12,310 +12,29 @@
 ;; the Free Software Foundation, either version 3 of the License, or
 ;; (at your option) any later version.
 
-;; cdlatex.el is distributed in the hope that it will be useful,
+;; electricindex.el 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 cdlatex.el. If not, see <http://www.gnu.org/licenses/>.
+;; along with electricindex.el. If not, see <http://www.gnu.org/licenses/>.
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;;; Commentary:
 ;;
-;; CDLaTeX is a minor mode supporting fast insertion of environment
+;; Electricindex is a minor mode supporting fast insertion of environment
 ;; templates and math stuff in LaTeX.
 ;;
-;; To turn CDLaTeX Minor Mode on and off in a particular buffer, use
-;; `M-x cdlatex-mode'.
+;; To turn Electricindex Minor Mode on and off in a particular buffer, use
+;; `M-x electricindex-mode'.
 ;;
-;; To turn on CDLaTeX Minor Mode for all LaTeX files, add one of the
+;; To turn on Electricindex Minor Mode for all LaTeX files, add one of the
 ;; following lines to your .emacs file:
 ;;
-;;   (add-hook 'LaTeX-mode-hook #'turn-on-cdlatex)   ; with AUCTeX LaTeX mode
-;;   (add-hook 'latex-mode-hook #'turn-on-cdlatex)   ; with Emacs latex mode
-;;
-;; For key bindings, see further down in this documentation.
-;;
-;; CDLaTeX requires texmathp.el (which is distributed with AUCTeX) to
-;; auto-insert $...$ when needed, so we recommend you install AUCTeX to get
-;; this functionality.
-;;
-;;--------------------------------------------------------------------------
-;;
-;; OVERVIEW
-;; ========
-;;
-;; CDLaTeX is a minor mode supporting mainly mathematical and scientific
-;; text development with LaTeX.  CDLaTeX is really about speed.  AUCTeX
-;; (the major mode I recommend for editing LaTeX files) does have a hook
-;; based system for inserting environments and macros - but while this is
-;; useful and general, it is sometimes slow to use.  CDLaTeX tries to be
-;; quick, with very few and easy to remember keys, and intelligent
-;; on-the-fly help.
-;;
-;; 1. ABBREVIATIONS.
-;;    -------------
-;;    CDLaTeX has an abbrev-like mechanism to insert full LaTeX
-;;    environments and other templates into the buffer.  Abbreviation
-;;    expansion is triggered with the TAB key only, not with SPC or RET.
-;;    For example, typing "ite<TAB>" inserts an itemize environment.  A
-;;    full list of defined abbreviations is available with the command
-;;    `C-c ?' (`cdlatex-command-help').
-;;
-;;    1a. ENVIRONMENT TEMPLATES
-;;        ---------------------
-;;        Typing `C-c {' (`cdlatex-environment') uses the minibuffer to
-;;        complete the name of a LaTeX environment and inserts a template
-;;        for this environment into the buffer.  These environment
-;;        templates also contain labels created with RefTeX.  In a
-;;        template, text needs to be filled in at various places, which we
-;;        call "points of interest".  You can use the TAB key to jump to
-;;        the next point of interest in the template.  If there is an
-;;        active region, the region will be wrapped into the environment,
-;;        ignoring the template content.
-;;
-;;        For many frequently used LaTeX environments, abbreviations are
-;;        available.  Most of the time, the abbreviation consists of the
-;;        first three letters of the environment name: `equ<TAB>' expands
-;;        into
-;;            \begin{equation}
-;;            \label{eq:1}
-;;
-;;            \end{equation}
-;;
-;;        Similarly, `ali<TAB>' inserts an AMS-LaTeX align environment
-;;        template etc.  For a full list of environment abbreviations, use
-;;        `C-c ?'.
-;;
-;;        Use the command `C-c -' (`cdlatex-item') to insert a generalized
-;;        new "item" in any "list"-like environment.  For example, in an
-;;        itemize environment, this inserts "\item", in an enumerate
-;;        environment it inserts "\item\label{item:25}" and in an eqnarray
-;;        environment, it inserts "\label{eq:25} \n & &".  When
-;;        appropriate, newlines are inserted, and the previous item is also
-;;        closed with "\\".  `cdlatex-item' can also be invoked with the
-;;        abbreviation "it<TAB>".
-;;
-;;    1b. MATH TEMPLATES
-;;        --------------
-;;        Abbreviations are also used to insert simple math templates
-;;        into the buffer.  The cursor will be positioned properly.  For
-;;        example, typing `fr<TAB>' will insert "\frac{}{}" with the
-;;        cursor in the first pair of parenthesis.  Typing `lr(<TAB>'
-;;        will insert a "\left( \right)" pair and position the cursor in
-;;        between, etc.  Again, the TAB key can be used to jump to the
-;;        points in the template where additional text has to be
-;;        inserted.  For example in the `\frac{}{}' template, it will
-;;        move you from the first argument to the second and then out of
-;;        the second.  For a list of available templates, type `C-c ?'.
-;;        As a special case, the left-right parenthesis combinations can
-;;        also be applied after writing the content by selecting the
-;;        content and typing '( or '[ or '{ or '< or '| .
-;;
-;; 2. MATHEMATICAL SYMBOLS
-;;    --------------------
-;;    This feature is similar to the functionality in the Math minor mode
-;;    of AUCTeX, and to the input methods of the X-Symbol package.  It is
-;;    introduced by the backquote character.  Backquote followed by any
-;;    character inserts a LaTeX math macro into the buffer.  If
-;;    necessary, a pair of "$" is inserted to switch to math mode.  For
-;;    example, typing "`a" inserts "$\alpha$".  Since LaTeX defines many
-;;    more mathematical symbols than the alphabet has letters, different
-;;    sets of math macros are provided.  We call the different sets
-;;    "levels".  On each level, another LaTeX macro is assigned to a
-;;    given letter.  To select the different levels, simply press the
-;;    backquote character several times before pressing the letter.  For
-;;    example, typing "`d" inserts "\delta" (level 1), and typing "``d"
-;;    inserts "\partial" (level 2).  Similarly, "`e" inserts "\epsilon"
-;;    and "``e" inserts "\varepsilon".
-;;
-;;    On each level, on-thy-fly help will pop up automatically if you
-;;    hesitate to press the next key.  The help screen is a window which
-;;    lists all math macros available on the current level.  Initially,
-;;    when you type slowly, this window will pop up each time you press
-;;    backquote.  However, after you have learned the different keys, you
-;;    will type more quickly and the help window is not shown.  Try it
-;;    out: First press "`" (backquote), wait for the help window and then
-;;    press "a" to get "\alpha".  Then press "`" and "b" as a quick
-;;    sequence to get "\beta", without the help window.
-;;
-;;    The LaTeX macros available through this mechanism are fully
-;;    configurable - see the variable `cdlatex-math-symbol-alist'.
-;;
-;; 3. ACCENTS AND FONTS
-;;    -----------------
-;;    Putting accents on mathematical characters and/or changing the font
-;;    of a character uses key combinations with the quote character "'"
-;;    as a prefix.  The accent or font change is applied to the character
-;;    or LaTeX macro *before* point.  For example
-;;
-;;      Keys                            Result
-;;      --------------------------------------------------------------------
-;;      a'~                             ERROR                 % in text mode
-;;      $a'~                            \tilde{a}             % in math mode
-;;      a':                             \ddot{a}
-;;      ab'b                            \textbf{ab}           % in text mode
-;;      $ab'b                           a\mathbf{b}           % in math mode
-;;      \alpha'.                        \dot{\alpha}
-;;      r_{dust}'r                      r_\mathrm{dust}       % in math mode
-;;      <SPC> 'e                        \emph{}
-;;      this is important   M-2 'b      this \textbf{is important}
-;;
-;;    As you can see:
-;;    - using math accents like ~ outside math mode will throw an error.
-;;    - the font change used automatically adapts to math mode.
-;;    - if the item before point is a LaTeX macro, the change applies to
-;;      the whole macro.
-;;    - in text mode, the change applies to the entire word before point,
-;;      while in math mode only the last character is modified.
-;;    - if the character before point is white space, a dollar or an
-;;      opening parenthesis, this command just opens an empty template
-;;      and positions the cursor inside.
-;;    - when a numeric prefix argument is supplied, the command acts on
-;;      whole words before the cursor.
-;;    - Furthermore, if there is an active region, the change will apply
-;;      to the content of that region.
-;;
-;;    In order to insert a normal quote, you can press the quote
-;;    character twice.  Also, if the key character is not associated with
-;;    an accent or font, the quote will be inserted.  For example, "'t"
-;;    and "'s" insert just that, so that normal text typing will not be
-;;    disturbed.  Just like during the insertion of math macros (see above
-;;    under (4.)), automatic on-the-fly help will pop up when you pause
-;;    after hitting the quote character, but will be suppressed when you
-;;    continue quickly.  The available accents and also the prefix key
-;;    can be can be configured - see documentation of the variables
-;;    `cdlatex-math-modify-alist' and `cdlatex-math-modify-prefix'.
-;;
-;; 4. PAIR INSERTION of (), [], {}, and $$
-;;    ------------------------------------
-;;    Dollars and parens can be inserted as pairs.  When you type the
-;;    opening delimiter, the closing delimiter will be inserted as well,
-;;    and the cursor positioned between them.  You can configure which
-;;    delimiter are inserted pairwise by configuring the variable
-;;    `cdlatex-paired-parens'.
-;;
-;;    Also, the keys `_' and `^' will insert "_{}" and "^{}",
-;;    respectively, and, if necessary, also a pair of dollar signs to
-;;    switch to math mode.  You can use TAB to exit paired parenthesis.
-;;    As a special case, when you use TAB to exit a pair of braces that
-;;    belong to a subscript or superscript, CDLaTeX removes the braces if
-;;    the sub/superscript consists of a single character.  For example
-;;    typing "$10^3<TAB>" inserts "$10^3$", but typing "$10^34<TAB>"
-;;    inserts "$10^{34}$".
-;;
-;;    If you press `_' or `^' twice, the template inserted will be
-;;    `_{\mathrm{}}' or `^{\mathrm }', respectively, to insert a roman
-;;    sub/super-script.  Style guides require that all sub- and
-;;    superscripts that are descriptive (so not a mathematical or
-;;    physical quantity themselves) need to be roman.  So $x_i$ is i
-;;    is an index, but $x_{\rm max}$ to indicate the maximum value.  You
-;;    can disable this behavior through the variable
-;;    `cdlatex-make-sub-superscript-roman-if-pressed-twice'.
-;;
-;; 5. THE OVERLOADED TAB KEY
-;;    ----------------------
-;;    You may have noticed that we use the TAB key for many different
-;;    purposes in this package.  While this may seem confusing, I have
-;;    gotten used to this very much.  Hopefully this will work for you as
-;;    well: "when in doubt, press TAB".  Here is a summary of what happens
-;;    when you press the TAB key:
-;;
-;;    The function first tries to expand any abbreviation before point.
-;;
-;;    If there is none, it cleans up short subscripts and superscripts at
-;;    point.  I.e., is the cursor is just before the closing brace in
-;;    "a^{2}", it changes it to "a^2", since this is more readable.  If
-;;    you want to keep the braces also for simple superscripts and
-;;    subscripts, set the variable `cdlatex-simplify-sub-super-scripts'
-;;    to nil.
-;;
-;;    After that, the TAB function jumps to the next point of interest in
-;;    a LaTeX text where one would reasonably expect that more input can
-;;    be put in.  This does *not* use special markers in the template,
-;;    but a heuristic method which works quite well.  For the detailed
-;;    rules which govern this feature, check the documentation of the
-;;    function `cdlatex-tab'.
-;;
-;;-----------------------------------------------------------------------------
-;;
-;; CONFIGURATION EXAMPLES
-;; ======================
-;;
-;; Check out the documentation of the variables in the configuration
-;; section.  The variables must be set before cdlatex-mode is turned on,
-;; or, at the latext, in `cdlatex-mode-hook', in order to be effective.
-;; When changing the variables, toggle the mode off and on to make sure
-;; that everything is up to date.
-;;
-;; Here is how you might configure CDLaTeX to provide environment templates
-;; (including automatic labels) for two theorem-like environments.
-;;
-;;   (setq cdlatex-env-alist
-;;      '(("axiom" "\\begin{axiom}\nAUTOLABEL\n?\n\\end{axiom}\n" nil)
-;;        ("theorem" "\\begin{theorem}\nAUTOLABEL\n?\n\\end{theorem}\n" nil)))
-;;
-;; The "AUTOLABEL" indicates the place where an automatic label should be
-;; inserted, using RefTeX.  The question mark defines the position of the
-;; cursor after the template has been inserted into the buffer.
-;;
-;; You could also define your own keyword commands "axm" and "thr" to make
-;; the template insertion quicker (e.g. `axm<TAB>' and `thm<TAB>'):
-;;
-;; (setq cdlatex-command-alist
-;;  '(("axm" "Insert axiom env"   "" cdlatex-environment ("axiom") t nil)
-;;    ("thr" "Insert theorem env" "" cdlatex-environment ("theorem") t nil)))
-;;
-;; Here is how to add new math symbols to CDLaTeX's list: In order to put
-;; all rightarrow commands onto `>, ``>, ```>, and ````> (i.e. several
-;; backquotes followed by >) and all leftarrow commands onto '<, ``<, ```<,
-;; and ````<,  you could do this in .emacs:
-;;
-;;   (setq cdlatex-math-symbol-alist
-;; '((?< ("\\leftarrow" "\\Leftarrow" "\\longleftarrow" "\\Longleftarrow"))
-;;   (?> ("\\rightarrow" "\\Rightarrow" "\\longrightarrow" "\\Longrightarrow"))
-;;    ))
-;;
-;; To change the prefix key for math accents and font switching, you could
-;; do something like
-;;
-;;   (setq cdlatex-math-modify-prefix [f7])
-;;-----------------------------------------------------------------------------
-;;
-;; KEY BINDINGS
-;;
-;; Here is the default set of keybindings from CDLaTeX.  A menu is also
-;; installed.
-;;
-;;   $         cdlatex-dollar
-;;   (         cdlatex-pbb
-;;   {         cdlatex-pbb
-;;   [         cdlatex-pbb
-;;   |         cdlatex-pbb
-;;   <         cdlatex-pbb
-;;   ^         cdlatex-sub-superscript
-;;   _         cdlatex-sub-superscript
-;;
-;;   TAB       cdlatex-tab
-;;   C-c ?     cdlatex-command-help
-;;   C-c {     cdlatex-environment
-;;   C-c -     cdlatex-item
-;;   `         cdlatex-math-symbol
-;;   '         cdlatex-math-modify
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; FAQ
-;;
-;; - Some people find it disturbing that the quote character (') is active
-;;   for math accents and font switching.  I have tried to avoid any letters
-;;   which are frequently following ' in normal text.  For example, 's and 't
-;;   insert just this.  If you still prefer a different prefix key, just
-;;   configure the variable `cdlatex-math-modify-prefix'.
-;;
-;; - To insert a backquote into the buffer, use C-q `
+;;   (add-hook 'LaTeX-mode-hook #'turn-on-electricindex)   ; with AUCTeX LaTeX 
mode
+;;   (add-hook 'latex-mode-hook #'turn-on-electricindex)   ; with Emacs latex 
mode
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -323,412 +42,58 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl-lib))
-(require 'reftex)
-
 ;;; Begin of Configuration Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-;; Configuration Variables and User Options for CDLaTeX ------------------
+;; Configuration Variables and User Options for Electricindex 
------------------
 
-(defgroup cdlatex nil
+(defgroup electricindex nil
   "LaTeX label and citation support."
-  :tag "CDLaTeX"
+  :tag "Electricindex"
   :link '(url-link :tag "Home Page" "http://zon.astro.uva.nl/~dominik/Tools/";)
-  :prefix "cdlatex-"
+  :prefix "electricindex-"
   :group 'tex)
 
-(defun cdlatex-customize ()
-  "Call the customize function with cdlatex as argument."
-  (interactive)
-  (cond
-   ((fboundp 'customize-browse)
-    (customize-browse 'cdlatex))
-   ((fboundp 'customize-group)
-    (customize-group 'cdlatex))
-   (t (error "No customization available"))))
-
-(defun cdlatex-create-customize-menu ()
-  "Create a full customization menu for CDLaTeX."
-  (interactive)
-  (if (fboundp 'customize-menu-create)
-      (progn
-        (easy-menu-change
-         '("CDLTX") "Customize"
-         `(["Browse CDLaTeX group" cdlatex-customize t]
-           "---"
-           ,(customize-menu-create 'cdlatex)
-           ["Set" Custom-set t]
-           ["Save" Custom-save t]
-           ["Reset to Current" Custom-reset-current t]
-           ["Reset to Saved" Custom-reset-saved t]
-           ["Reset to Standard Settings" Custom-reset-standard t]))
-        (message "\"CDLTX\"-menu now contains full customization menu"))
-    (error "Cannot expand menu (outdated version of cus-edit.el)")))
-
-;; Configuration of KEYWORD commands ------------------------------------
-
-(defgroup cdlatex-keyword-commands nil
-  "How to type a keyword in the buffer and hit TAB to execute."
-  :group 'cdlatex)
-
-(defcustom cdlatex-command-alist nil
-  "List of abbrev-like commands, available with keyword and TAB.
-See `cdlatex-command-alist-default' for examples.  This list only
-defines additions to the defaults.  For a full list of active commands,
-press \\[cdlatex-command-help].
-Each element of this list is again a list with the following items:
-0. KEYWORD     The key that has to be typed into the text.
-1. DOCSTRING   A documentation string, less than 60 characters long.
-2. REPLACE     The text to be substituted for the keyword, if any.
-3. HOOK        A function to be called.
-4. ARGS        Optional list of arguments to the function.
-5. TEXTFLAG    non-nil means this keyword command is active in textmode.
-6. MATHFLAG    non-nil means this keyword command is active in math mode."
-  :group 'cdlatex-keyword-commands
-  :type '(repeat
-          (list (string   :tag "Keyword    ")
-                (string   :tag "Docstring  ")
-                (string   :tag "Replacement")
-                (function :tag "Hook       ")
-                (sexp     :tag "Arguments  ")
-                (boolean  :tag "Available in Text mode")
-                (boolean  :tag "Available in Math mode"))))
-
-(defcustom cdlatex-tab-hook nil
-  "List of functions called by TAB before the default command is executed.
-These functions are called each time TAB is pressed.  They may parse the
-environment and take an action.  The function should return t when it
-successful executed an action and other TAB actions should *not* be tried.
-When a return value is nil, other hook functions are tried, followed by the
-default action of TAB (see documentation of the command `cdlatex-tab'."
-  :group 'cdlatex-keyword-commands
-  :type '(repeat (function :tag "Function" :value nil)))
-
-;; Configuration of environment templates -------------------------------
-
-(defgroup cdlatex-environment-support nil
-  "Template-based insertion of LaTeX environments."
-  :group 'cdlatex)
-
-(defcustom cdlatex-env-alist nil
-  "Association list of LaTeX environments and the corresponding templates.
-The car of the list is a keyword to identify the environment.
-the two following items in the list are the templates for environment
-and item.  See `cdlatex-env-alist-default' for examples.  Any entries
-in this variable will be added to the default definitions."
-  :group 'cdlatex-environment-support
-  :type '(repeat
-          (list :tag ""
-                (string :format "ENVIRONMENT %v" "")
-                (text   :format "ENVIRONMENT TEMPLATE\n%v" "")
-                (choice :tag "ITEM"
-                        (const :tag "none" nil)
-                        (text  :tag "template" :format "TEMPLATE\n%v" "")))))
-
-(defcustom cdlatex-insert-auto-labels-in-env-templates t
-  "Non-nil means the environment templates CDLaTeX will contain labels.
-This variable may be set to t, nil, or a string of label type letters
-indicating the label types for which it should be true."
-  :group 'cdlatex-making-and-inserting-labels
-  :type '(choice :tag "Insert labels in templates"
-                 (const  :tag "always" t)
-                 (const  :tag "never" nil)
-                 (string :tag "selected label types" "")))
-
-;; Configuration of Math character insertion and accents ----------------
-
-(defgroup cdlatex-math-support nil
-  "Support for mathematical symbols and accents in CDLaTeX."
-  :group 'cdlatex)
-
-(defcustom cdlatex-math-symbol-prefix ?`
-  "Prefix key for `cdlatex-math-symbol'.
-This may be a character, a string readable with `read-kbd-macro', or a
-Lisp vector."
-  :group 'cdlatex-math-support
-  :type '(choice
-          (character)
-          (string :value "" :tag "kbd readable string")
-          (sexp :value [] :tag "a lisp vector")))
-
-(defcustom cdlatex-math-symbol-direct-bindings '(nil nil nil)
-  "How to bind the math symbols directly.
-This is a list of key binding descriptions for different levels of
-math symbols.  First entry for level 1 etc.
-Each entry consists of a prefix key and a list of modifiers for the
-character.  The prefix key can be nil, or any of a character, a
-`read-kbd-macro' readable string or a vector.
-Examples:
-`((nil alt))'                   bind `\\delta' to `A-d'.
-`((\"C-c C-f\"))'               bind `\\delta' to `C-c C-f d'.
-`((nil alt) (nil alt control))' bind `\\delta' to `A-d' and
-                                `\\partial' (which is on level 2)
-                                to `A-C-d'"
-  :group 'cdlatex-math-support
-  :type '(repeat
-          (choice
-           (const :tag "No binding of this level" nil)
-           (cons
-            :tag "Specify a binding"
-            :value (nil alt)
-            (choice
-             (const :tag "No prefix" nil)
-             (character :value ?@)
-             (string :value "" :tag "kbd readable string")
-             (sexp :value [] :tag "a lisp vector"))
-            (set :tag "Modifiers for the final character" :greedy t
-                 (const control)
-                 (const meta)
-                 (const alt)
-                 (const super)
-                 (const hyper))))))
-
-(defcustom cdlatex-math-symbol-alist nil
-  "Key characters and math symbols for fast access with the prefix key.
-First element is a character, followed by a number of strings attached to
-this key.  When the string contains a question mark, this is where the
-cursor will be positioned after insertion of the string into the buffer.
-See `cdlatex-math-symbol-alist-default' for an example.  Any entry defined
-here will replace the corresponding entry of the default list.  The
-defaults implement 3 levels of symbols so far: Level 1 for Greek letters
-and standard symbols, level 2 for variations of level 1, and level 3 for
-functions and operators."
-  :group 'cdlatex-math-support
-  :type '(repeat
-          (list
-           (character ?a)
-           (repeat (string :tag "macro" "")))))
-
-(defcustom cdlatex-math-modify-prefix ?'
-  "Prefix key for `cdlatex-math-modify'.
-It can be a character, a string interpretable with `read-kbd-macro',
-or a Lisp vector."
-  :group 'cdlatex-math-support
-  :type '(choice
-          (character)
-          (string :value "" :tag "kbd readable string")
-          (sexp :value [] :tag "a lisp vector")))
-
-(defcustom cdlatex-modify-backwards t
-  "Non-nil means, `cdlatex-math-modify' modifies char before point.
-Nil means, always insert only an empty modification form.  This is also
-the case if the character before point is white or some punctuation."
-  :group 'cdlatex-math-support
-  :type 'boolean)
-
-(defcustom cdlatex-math-modify-alist nil
-  "List description of the LaTeX math accents.
-See `cdlatex-math-modify-alist-default' for an example.  Any entries in this
-variable will be added to the default.
-Each element contains 6 items:
-0. key:      The character that is the key for a the accent.
-1. mathcmd:  The LaTeX command associated with the accent in math mode
-2. textcmd:  The LaTeX command associated with the accent in text mode
-3. type:     t   if command with argument (e.g. \\tilde{a}).
-             nil if style (e.g. {\\cal a}).
-4. rmdot:    t   if the dot on i and j has to be removed.
-5. it        t   if italic correction is required."
-  :group 'cdlatex-math-support
-  :type '(repeat
-          (list (character :tag "Key character ")
-                (choice :tag "TeX macro inside  math mode"
-                        (string "")
-                        (const :tag "none" nil))
-                (choice :tag "TeX macro outside math mode"
-                        (string "")
-                        (const :tag "none" nil))
-                (boolean :tag "Type             " :on "Command" :off "Style")
-                (boolean :tag "Remove dot in i/j")
-                (boolean :tag "Italic correction"))))
-
-(defcustom cdlatex-make-sub-superscript-roman-if-pressed-twice t
-  "Non-nil means, pressing `^' or `_' twice inserts roman sub/superscript."
-  :group 'cdlatex-math-support
-  :type 'boolean)
-
-(defcustom cdlatex-use-dollar-to-ensure-math t
-  "Non-nil means, use $...$ to force a math mode setting where needed.
-When nil, use \\(...\\) instead."
-  :group 'cdlatex-math-support
-  :type '(boolean))
-
-;; Miscellaneous configurations -----------------------------------------
-
-(defgroup cdlatex-miscellaneous-configurations nil
-  "Collection of further configurations."
-  :group 'cdlatex)
-
-(defcustom cdlatex-use-fonts t
-  "Non-nil means, use fonts in label menu and on-the-fly help.
-Font-lock must be loaded as well to actually get fontified display."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-takeover-parenthesis t
-  "Non-nil means, cdlatex is allowed to take over the parenthesis insertion.
-This means it will redefine the `(', `{', and `[' keys."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-takeover-dollar t
-  "Non-nil means, cdlatex is allowed to take over the $.
-This means it will redefine the `$' keys."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-takeover-subsuperscript t
-  "Non-nil means, cdlatex is allowed to take over the ^ and _ keys."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-paired-parens "$[{"
-  "String with the opening parens you want to have inserted paired.
-The following parens are allowed here: `$([{|<'.
-I recommend to set this to '$[{' as these have syntactical meaning in
-TeX and are required to be paired.  TAB is a good way to move out of paired
-parens."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(string :tag "Opening delimiters"))
-
-(defcustom cdlatex-simplify-sub-super-scripts t
-  "Non-nil means, TAB will simplify sub- and superscripts at point.
-When you use TAB to exit from a sub- or superscript which is a single
-letter, the parenthesis will be removed."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-sub-super-scripts-outside-math-mode t
-  "Non-nil means, inserting ^ or _ will add dollars outside math environment.
-So in text mode surrounding dollars and braces will be added with `_' and `^'.
-When nil, `_' and `^' will just self-insert."
-  :group 'cdlatex-miscellaneous-configurations
-  :type '(boolean))
-
-(defcustom cdlatex-auto-help-delay 1.5
-  "Number of idle seconds before display of auto-help.
-When executing `cdlatex-math-symbol' or `cdlatex-math-modify', display
-automatic help when idle for more than this amount of time."
-  :group 'cdlatex-miscellaneous-configurations
-  :type 'number)
-
 ;;;============================================================================
 ;;;
-;;; Define the formal stuff for a minor mode named CDLaTeX.
+;;; Define the formal stuff for a minor mode named Electricindex.
 ;;;
 
-(defun cdlatex-show-commentary ()
-  "Use the finder to view the file documentation from `cdlatex.el'."
-  (interactive)
-  (require 'finder)
-  (finder-commentary "cdlatex.el"))
+(defvar electricindex-mode nil
+  "Determines if Electricindex minor mode is active.")
+(make-variable-buffer-local 'electricindex-mode)
 
-(defvar cdlatex-mode nil
-  "Determines if CDLaTeX minor mode is active.")
-(make-variable-buffer-local 'cdlatex-mode)
-
-(defun cdlatex-get-kbd-vector (obj)
-  "Ensure OBJ can be used as a keybinding."
-  (cond ((vectorp obj) obj)
-        ((integerp obj) (vector obj))
-        ((stringp obj) (read-kbd-macro obj))
-        ((and (fboundp 'characterp) (characterp obj))
-         (vector obj))        ; XEmacs only
-        (t nil)))
-
-(defvar cdlatex-mode-map
+(defvar electricindex-mode-map
   (let ((map (make-sparse-keymap)))
-    (if cdlatex-takeover-dollar
-        (define-key map  "$"         #'cdlatex-dollar))
-    (if cdlatex-takeover-parenthesis
-        (progn
-          (define-key map  "("         #'cdlatex-pbb)
-          (define-key map  "{"         #'cdlatex-pbb)
-          (define-key map  "["         #'cdlatex-pbb)
-          (define-key map  "|"         #'cdlatex-pbb)
-          (define-key map  "<"         #'cdlatex-pbb)))
-    (if cdlatex-takeover-subsuperscript
-        (progn
-          (define-key map  "^"         #'cdlatex-sub-superscript)
-          (define-key map  "_"         #'cdlatex-sub-superscript)))
-    
-    (define-key map  "\t"        #'cdlatex-tab)
-    (define-key map  "\C-c?"     #'cdlatex-command-help)
-    (define-key map  "\C-c{"     #'cdlatex-environment)
-    (define-key map  [(control return)] #'cdlatex-item)
-    
-    (define-key map (cdlatex-get-kbd-vector cdlatex-math-symbol-prefix)
-      #'cdlatex-math-symbol)
-    (define-key map (cdlatex-get-kbd-vector cdlatex-math-modify-prefix)
-      #'cdlatex-math-modify)
+    (define-key map  "1"        #'electricindex-digit)
+    (define-key map  "2"        #'electricindex-digit)
+    (define-key map  "3"        #'electricindex-digit)
+    (define-key map  "4"        #'electricindex-digit)
+    (define-key map  "5"        #'electricindex-digit)
+    (define-key map  "6"        #'electricindex-digit)
+    (define-key map  "7"        #'electricindex-digit)
+    (define-key map  "8"        #'electricindex-digit)
+    (define-key map  "9"        #'electricindex-digit)
+    (define-key map  "0"        #'electricindex-digit)
     map)
-  "Keymap for CDLaTeX minor mode.")
+  "Keymap for Electricindex minor mode.")
 
 ;;;###autoload
-(defun turn-on-cdlatex ()
-  "Turn on CDLaTeX minor mode."
-  (cdlatex-mode t))
+(defun turn-on-electricindex ()
+  "Turn on Electricindex minor mode."
+  (electricindex-mode t))
 
 ;;;###autoload
-(define-minor-mode cdlatex-mode
-  "Minor mode for editing scientific LaTeX documents.
-
-Here is a list of features: \\<cdlatex-mode-map>
-
-                           KEYWORD COMMANDS
-                           ----------------
-
-Many CDLaTeX commands are activated with an abbrev-like
-mechanism.  When a keyword is typed followed \\[cdlatex-tab], the
-keyword is deleted from the buffer and a command is executed.
-You can get a full list of these commands with
-\\[cdlatex-command-help].  For example, when you type `fr<TAB>',
-CDLaTeX will insert \\frac{}{}.
-
-When inserting templates like \\='\\frac{}{}\\=', the cursor is
-positioned properly.  Use \\[cdlatex-tab] to move through
-templates.  \\[cdlatex-tab] also kills unnecessary braces around
-subscripts and superscripts at point.
-
-                     MATH CHARACTERS AND ACCENTS
-                     ---------------------------
-
-\\[cdlatex-math-symbol] followed by any character inserts a LaTeX
-math character
-      e.g. \\[cdlatex-math-symbol]e
-        => \\epsilon
-
-\\[cdlatex-math-symbol]\\[cdlatex-math-symbol] followed by any
-character inserts other LaTeX math character
-      e.g. \\[cdlatex-math-symbol]\\[cdlatex-math-symbol]e
-        => \\varepsilon
-\\[cdlatex-math-modify]  followed by character puts a math
-accent on a letter or symbol
-      e.g. \\[cdlatex-math-symbol]a\\[cdlatex-math-modify]~
-        => \\tilde{\\alpha}
-
-CDLaTeX is aware of the math environments in LaTeX and modifies
-the workings of some functions according to the current status.
-
-                             ONLINE HELP
-                             -----------
-
-After pressing \\[cdlatex-math-symbol] or
-\\[cdlatex-math-modify], CDLaTeX waits for a short time for the
-second character.  If that does not come, it will pop up a window
-displaying the available characters and their meanings.
-
-                             KEY BINDINGS
-                             ------------
-\\{cdlatex-mode-map}
+(define-minor-mode electricindex-mode
+  "Minor mode for electric insertion of numbered indixes.
 
-Under X, many functions will be available also in a menu on the menu bar.
+Here is a list of features: \\<electricindex-mode-map>
 
-Entering `cdlatex-mode' calls the hook cdlatex-mode-hook."
-  :lighter " CDL"
-  (when cdlatex-mode
-    (cdlatex-compute-tables)))
+Entering `electricindex-mode' calls the hook electricindex-mode-hook."
+  :lighter " EI"
+  (when electricindex-mode
+    (electricindex-compute-tables)))
 
-(defalias 'cdlatex--texmathp
+(defalias 'electricindex--texmathp
   (if (fboundp 'texmathp) #'texmathp
     ;; FIXME: Maybe we could do better, but why bother: the users who want it
     ;; can install AUCTeX.  Tho maybe we should move texmathp into its
@@ -740,1542 +105,8 @@ Entering `cdlatex-mode' calls the hook 
cdlatex-mode-hook."
 ;;;
 ;;; Functions that check out the surroundings
 
-(defun cdlatex-dollars-balanced-to-here (&optional from)
-  "Non-nil if the dollars are balanced between start of paragraph and point.
-Unless the optional argument FROM specifies the position from
-where to check for balance, the beginning of the current
-paragraph is used."
-  (save-excursion
-    (let ((answer t) (pos (point)))
-      (if from
-          (goto-char from)
-        (backward-paragraph 1))
-      (if (not (bobp)) (backward-char 1))
-      (while (re-search-forward "[^\\]\\$+" pos t)
-        (if (/= (char-after (match-beginning 0)) ?\\)
-            (setq answer (not answer))))
-      (setq answer answer))))
-
-(defun cdlatex-number-of-backslashes-is-odd ()
-  "Count backslashes before point and return t if number is odd."
-  (let ((odd nil))
-    (save-excursion
-      (while (equal (preceding-char) ?\\)
-        (progn
-          (forward-char -1)
-          (setq odd (not odd)))))
-    (setq odd odd)))
-
-;; ============================================================================
-;;
-;; Some generally useful functions
-
-(defun cdlatex-uniquify (alist &optional keep-list)
-  "Return a list of all elements in ALIST, but each car only once.
-Elements of KEEP-LIST are not removed even if duplicate."
-  (let (new elm)
-    (while alist
-      (setq elm (car alist)
-            alist (cdr alist))
-      (if (or (member (car elm) keep-list)
-              (not (assoc (car elm) new)))
-          (setq new (cons elm new))))
-    (setq new (nreverse new))
-    new))
-
-(defun cdlatex-use-fonts ()
-  "Return t if we can and want to use fonts."
-  (and window-system
-       cdlatex-use-fonts
-       (boundp 'font-lock-keyword-face)))
-
-;;; ---------------------------------------------------------------------------
-;;;
-;;; Insert pairs of $$ (), etc.
-
-;; Alist connection opening with closing delimiters
-(defconst cdlatex-parens-pairs '(("(".")") ("["."]") ("{"."}")
-                               ("|"."|") ("<".">")))
-
-(defun cdlatex-pbb ()
-  "Insert a pair of parens, brackets or braces."
-  (interactive)
-  (let ((paren (char-to-string (event-basic-type last-command-event))))
-    (if (and (stringp cdlatex-paired-parens)
-             (string-match (regexp-quote paren) cdlatex-paired-parens)
-             (not (cdlatex-number-of-backslashes-is-odd)))
-        (progn
-          (insert paren)
-          (insert (cdr (assoc paren cdlatex-parens-pairs)))
-          (forward-char -1))
-      (insert paren))))
-
-(defun cdlatex-ensure-math ()
-  "Make sure we are in math mode."
-  (unless (if (fboundp 'texmathp) (texmathp) t)
-    (if cdlatex-use-dollar-to-ensure-math
-        (cdlatex-dollar)
-      (insert "\\(\\)")
-      (backward-char 2))))
-
-(defun cdlatex-dollar (&optional arg)
-  "Insert a pair of dollars unless number of backslashes before point is odd.
-With ARG, insert pair of double dollars."
-  (interactive "P")
-  (cond
-   ((cdlatex-number-of-backslashes-is-odd)
-    (insert "$"))
-   ((cdlatex--texmathp)
-    (defvar texmathp-why)
-    (if (and (stringp (car texmathp-why))
-             (equal (substring (car texmathp-why) 0 1) "$"))
-        (progn
-          (insert (car texmathp-why))
-          (save-excursion
-            (goto-char (cdr texmathp-why))
-            (if (pos-visible-in-window-p)
-                (sit-for 1))))
-      (message "No dollars inside a math environment!")
-      (ding)))
-   ((and (stringp cdlatex-paired-parens)
-         (string-match "\\$" cdlatex-paired-parens))
-    (if arg
-        (if (bolp)
-            (progn (insert "$$\n\n$$\n") (backward-char 4))
-          (insert "$$  $$") (backward-char 3))
-      (insert "$$") (backward-char 1)))
-   (arg
-    (if (bolp) (insert "$$\n") (insert "$$")))
-   (t (insert "$"))))
-
-(defun cdlatex-sub-superscript ()
-  "Insert ^{} or _{} unless the number of backslashes before point is odd.
-When not in LaTeX math environment, _{} and ^{} will have dollars.
-When pressed twice, make the sub/superscript roman."
-  (interactive)
-  (if (and cdlatex-make-sub-superscript-roman-if-pressed-twice
-           (equal this-command last-command))
-      (progn
-        ;; (insert "\\rm ")
-        (insert "\\mathrm{}")
-        (backward-char 1))
-    (if (cdlatex-number-of-backslashes-is-odd)
-        ;; Quoted
-        (insert (event-basic-type last-command-event))
-      ;; Check if we are in math mode, if not switch to or only add _ or ^
-      (if (not (or (cdlatex--texmathp)
-                   cdlatex-sub-super-scripts-outside-math-mode))
-          (insert (event-basic-type last-command-event))
-        (cdlatex-ensure-math)
-        ;; Insert the normal template.
-        (insert (event-basic-type last-command-event))
-        (insert "{}")
-        (forward-char -1)))))
-
-(defun cdlatex-lr-pair ()
-  "Insert a \\left-\\right pair of parens."
-  (interactive)
-  (let* ((paren (char-to-string (preceding-char)))
-         (close (cdr (assoc paren cdlatex-parens-pairs)))
-         (paren1 paren)
-         (close1 close))
-    (if (string= paren "<") (setq paren1 "\\langle" close1 "\\rangle"))
-    (if (string= paren "{") (setq paren1 "\\{" close1 "\\}"))
-    (backward-delete-char 1)
-    (if (and (stringp cdlatex-paired-parens)
-             (string-match (regexp-quote paren) cdlatex-paired-parens)
-             (string= close (char-to-string (following-char))))
-        ; parens are inserted paired, and there is already a closing 
parenthesis
-        (delete-char 1))
-    (insert "\\left" paren1 " ? \\right" close1)
-    (cdlatex-position-cursor)))
-
-;;; ===========================================================================
-;;;
-;;; Keyword controlled commands and cursor movement
-
-(defvar cdlatex-command-alist-comb nil)
-
-(defun cdlatex-tab ()
-  "This function is intended to do many cursor movements.
-It is bound to the tab key since tab does nothing useful in a TeX file.
-
-This function first calls all functions in `cdlatex-tab-hook', which see.
-
-If none of those functions returns t, the command  first tries to expand
-any command keyword before point.
-
-If there is none, it cleans up short subscripts and superscripts at point.
-I.e. it changes a^{2} into a^2, since this is more readable.  This feature
-can be disabled by setting `cdlatex-simplify-sub-super-scripts' to nil.
-
-Then it jumps to the next point in a LaTeX text where one would reasonably
-expect that more input can be put in.
-To do that, the cursor is moved according to the following rules:
-
-The cursor stops...
-- before closing brackets if `preceding-char' is any of -({[]})
-- after  closing brackets, but not if `following-char' is any of ({[_^
-- just after $, if the cursor was before that $.
-- at end of non-empty lines
-- at the beginning of empty lines
-- before a SPACE at beginning of line
-- after first of several SPACE
-
-Sounds strange?  Try it out!"
-  (interactive)
-  (catch 'stop
-
-    ;; try hook stuff
-    (let ((funcs cdlatex-tab-hook))
-      (while funcs (if (funcall (pop funcs)) (throw 'stop t))))
-
-    ;; try command expansion
-    (let ((pos (point)) exp math-mode)
-      (backward-word 1)
-      (while (eq (following-char) ?$) (forward-char 1))
-      (setq exp (buffer-substring-no-properties (point) pos))
-      (setq exp (assoc exp cdlatex-command-alist-comb))
-      (when exp
-        (setq math-mode (cdlatex--texmathp))
-        (when (or (and (not math-mode) (nth 5 exp))
-                  (and math-mode (nth 6 exp)))
-          (delete-char (- pos (point)))
-          (insert (nth 2 exp))
-          ;; call the function if there is one defined
-          (and (nth 3 exp)
-               (if (nth 4 exp)
-                   (apply (nth 3 exp) (nth 4 exp))
-                 (funcall (nth 3 exp))))
-          (throw 'stop t)))
-      (goto-char pos))
-
-    ;; Check for simplification of sub and superscripts
-    (cond
-     ((looking-at "}\\|\\]\\|)")
-      (forward-char -3)
-      (if (and (looking-at "[_^]{[-+0-9a-zA-Z]}")
-               cdlatex-simplify-sub-super-scripts)
-          ;; simplify sub/super script
-          (progn (forward-char 1)
-                 (delete-char 1)
-                 (forward-char 1)
-                 (delete-char 1))
-        (forward-char 4))
-      (if (looking-at "[^_^({[]")
-          ;; stop after closing bracket, unless ^_[{( follow
-          (throw 'stop t)))
-     ((= (following-char) ?$)
-      (while (= (following-char) ?$) (forward-char 1))
-      (throw 'stop t))
-     ((= (following-char) ?\ )
-      ;; stop after first of many spaces
-      (forward-char 1)
-      (re-search-forward "[^ ]")
-      (if (/= (preceding-char) ?\n) (forward-char -1)))
-     (t
-      (forward-char 1)))
-
-    ;; move to next possible stopping site and check out the place
-    (while (re-search-forward "[ )}\n]\\|\\]" (point-max) t)
-      (forward-char -1)
-      (cond
-       ((= (following-char) ?\ )
-        ;; stop at first space or b-o-l
-        (if (not (bolp)) (forward-char 1)) (throw 'stop t))
-       ((= (following-char) ?\n)
-        ;; stop at line end, but not after \\
-        (if (and (bolp) (not (eobp)))
-            (throw 'stop t)
-          (if (equal "\\\\" (buffer-substring-no-properties
-                             (- (point) 2) (point)))
-              (forward-char 1)
-            (throw 'stop t))))
-       (t
-        ;; Stop before )}] if preceding-char is any parenthesis
-        (if (or (= (char-syntax (preceding-char)) ?\()
-                (= (char-syntax (preceding-char)) ?\))
-                (= (preceding-char) ?-))
-            (throw 'stop t)
-          (forward-char 1)
-          (if (looking-at "[^_\\^({\\[]")
-              ;; stop after closing bracket, unless ^_[{( follow
-              (throw 'stop t))))))))
-
-(defun cdlatex-command-help (&optional arg)
-  "Show the available cdlatex commands in the help buffer.
-With a non-nil ARG, or a prefix argument, run texdoc instead."
-  (interactive "P")
-  (if arg
-      (call-interactively 'TeX-documentation-texdoc)
-    (with-output-to-temp-buffer " *CDLaTeX Help*"
-      (princ "                    AVAILABLE KEYWORD COMMANDS WITH CDLaTeX\n")
-      (princ "                    --------------------------------------\n")
-      (princ "To execute, type keyword into buffer followed by TAB.\n\n")
-      (let ((cmdlist cdlatex-command-alist-comb) item key doc text math)
-        (while cmdlist
-          (setq item (car cmdlist)
-                cmdlist (cdr cmdlist)
-                key (car item)
-                doc (nth 1 item)
-                text (nth 5 item)
-                math (nth 6 item))
-          (princ (format "%-10.10s %-58.58s %4s/%4s\n" key
-                         (if (> (length doc) 59)
-                             (substring doc 0 59)
-                           doc)
-                         (if text "TEXT" "")
-                         (if math "MATH" ""))))))))
-
-;;; ---------------------------------------------------------------------------
-;;;
-;;; Cursor position after insertion of forms
-
-(defun cdlatex-position-cursor ()
-  "Search back to question mark, delete it, leave point there."
-  (if (search-backward "\?" (- (point) 100) t)
-      (delete-char 1)))
-
-;;; ---------------------------------------------------------------------------
-;;;
-;;; Environments
-;;;
-;;
-;; The following code implements insertion of LaTeX environments
-;; I prefer these environment over AUCTeX's definitions, since they give
-;; my memory more support and don't prompt for anything.
-
-(defvar cdlatex-env-alist-comb nil)
-
-(defun cdlatex-environment (&optional environment item)
-  "Complete the name of an ENVIRONMENT and insert it.
-If the environment is not found in the list, a \\begin \\end pair is
-inserted.  Any keywords AUTOLABEL will be replaced by an automatic label
-statement.  Any keywords AUTOFILE will prompt the user for a file name
-\(with completion) and insert that file names.  If a template starts with
-\"\\\\\", the function will make sure that a double backslash occurs before
-the template.  This is mainly useful for \"items\" of environments, where
-\"\\\\\" is often needed as separator."
-  (interactive)
-  (if (cdlatex-region-active-p)
-      (cdlatex-wrap-environment environment)
-    (let ((env environment) begpos (endmarker (make-marker))
-          (auto-label cdlatex-insert-auto-labels-in-env-templates)
-          template)
-      (if (not env)
-          (setq env (completing-read "Environment: " cdlatex-env-alist-comb 
nil nil "")))
-      (if (not (bolp)) (newline))
-      (setq begpos (point))
-      (if (try-completion env cdlatex-env-alist-comb)
-          (progn
-            (setq template (nth (if item 2 1)
-                                (assoc env cdlatex-env-alist-comb)))
-            (if (string= (substring template 0 2) "\\\\")
-                ;; Need a double backslash to teminate previous item
-                (progn
-                  (setq template (substring template 2))
-                  (if (not (save-excursion
-                             (re-search-backward "\\\\\\\\[ \t\n]*\\="
-                                                 (- (point) 20) t)))
-                      (save-excursion
-                        (skip-chars-backward " \t\n")
-                        (insert "\\\\")))))
-            (insert template))
-        (insert "\\begin{" env "}\n?\n\\end{" env "}\n"))
-      (move-marker endmarker (point))
-
-      ;; Look for AUTOFILE requests
-      (goto-char begpos)
-      (while (search-forward "AUTOFILE" (marker-position endmarker) t)
-        (backward-delete-char 8)
-        (call-interactively 'cdlatex-insert-filename))
-
-      ;; Look for AUTOLABEL requests
-      (goto-char begpos)
-      (while (search-forward "AUTOLABEL" (marker-position endmarker) t)
-        (backward-delete-char 9)
-        (if (and auto-label (fboundp 'reftex-label))
-            (reftex-label env)
-          (save-excursion
-            (beginning-of-line 1)
-            (if (looking-at "[ \t]*\n")
-                (kill-line 1)))))
-
-      ;; Position cursor at the first question-mark
-      (goto-char begpos)
-      (if (search-forward "?" (marker-position endmarker) t)
-          (backward-delete-char 1)))))
-
-(defun cdlatex-wrap-environment (&optional environment)
-  "Wrap the active region into ENVIRONMENT.
-If the environment is not given, ask for it using completion."
-  (let ((env environment)
-        (beg (move-marker (make-marker) (region-beginning)))
-        (end (move-marker (make-marker) (region-end))))
-    (if (not env)
-        (setq env (completing-read "Environment: "
-                                   cdlatex-env-alist-comb nil nil "")))
-    (goto-char beg)
-    (if (not (looking-back "^[ \t]*" (point-at-bol))) (newline))
-    (insert "\\begin{" env "}\n")
-    (goto-char end)
-    (if (not (looking-back "^[ \t]*" (point-at-bol))) (newline))
-    (insert "\\end{" env "}\n")
-    ))
-
-(defun cdlatex-item ()
-  "Insert an \\item and provide a label if the environments supports that.
-In eqnarrays this inserts a new line with two ampersands.  It will also
-add two backslashes to the previous line if required."
-  (interactive)
-  (let* ((env (car (car (reftex-what-environment t))))
-         (envl (assoc env cdlatex-env-alist-comb)))
-
-    (if (not env) (error "No open environment at point"))
-    (if (or (< (length envl) 3)
-            (null (nth 2 envl))
-            (and (stringp (nth 2 envl))
-                 (string= (nth 2 envl) "")))
-        (error "No item defined for %s environment" env))
-    (cdlatex-environment env t)))
-
-(defun cdlatex-comment-at-point ()
-  "Return t if point is inside a TeX comment."
-  (let ((end (point))
-        (start (progn (beginning-of-line 1) (point))))
-    (goto-char end)
-    (save-match-data
-      (string-match "^%\\|[^\\]%" (buffer-substring start end)))))
-
-(defun cdlatex-insert-filename (&optional absolute)
-  "Insert a file name, with completion.
-The path to the file will be relative to the current directory if the file
-is in the current directory or a subdirectory.  Otherwise, the link will
-be as completed in the minibuffer (i.e. normally relative to the users
-HOME directory).
-With optional prefix ABSOLUTE, insert the absolute path."
-  (interactive "P")
-  (let ((file (read-file-name "File: " nil "")))
-    (let ((pwd (file-name-as-directory (expand-file-name "."))))
-      (cond
-       (absolute
-        (insert (expand-file-name file)))
-       ((string-match (concat "^" (regexp-quote pwd) "\\(.+\\)")
-                      (expand-file-name file))
-        (insert (match-string 1 (expand-file-name file))))
-       (t (insert (expand-file-name file)))))))
-
-
-;;; ===========================================================================
-;;;
-;;; Math characters and modifiers
-
-;; The actual value of the following variable is calculated
-;; by `cdlatex-compute-tables'.  It holds the number of levels of math symbols
-(defvar cdlatex-math-symbol-no-of-levels 1)
-(defvar cdlatex-math-symbol-alist-comb nil)
-(defvar cdlatex-math-modify-alist-comb nil)
-
-(defvar zmacs-regions)
-(defun cdlatex-region-active-p ()
-  "Is `transient-mark-mode' on and the region active?
-Works on both Emacs and XEmacs."
-  (if (featurep 'xmeacs)
-      (and zmacs-regions (region-active-p))
-    (and transient-mark-mode mark-active)))
-
-(defun cdlatex-math-symbol ()
-  "Read a char from keyboard and insert corresponding math char.
-The combinations are defined in `cdlatex-math-symbol-alist'.  If not in a LaTeX
-math environment, you also get a pair of dollars."
-  (interactive)
-  (let* ((cell (cdlatex-read-char-with-help
-                cdlatex-math-symbol-alist-comb
-                1 cdlatex-math-symbol-no-of-levels
-                "Math symbol level %d of %d: "
-                "AVAILABLE MATH SYMBOLS.  [%c]=next level "
-                cdlatex-math-symbol-prefix
-                (get 'cdlatex-math-symbol-alist-comb 'cdlatex-bindings)))
-         (char (car cell))
-         (level (cdr cell))
-         (entry (assoc char cdlatex-math-symbol-alist-comb))
-         (symbol (nth level entry)))
-
-    (if (or (not symbol)
-            (not (stringp symbol))
-            (equal symbol ""))
-        (error "No such math symbol %c on level %d" char level))
-
-    (cdlatex-ensure-math)
-
-    (insert symbol)
-    (when (string-match "\\?" symbol)
-      (cdlatex-position-cursor))))
-
-(defun cdlatex-read-char-with-help (alist start-level max-level prompt-format
-                                          header-format prefix bindings)
-  "Read a char from keyboard and provide help if necessary."
-  (interactive)
-  (let (char (help-is-on nil)
-             (level start-level))
-    (catch 'exit
-      (save-window-excursion
-        (while t
-          (if help-is-on
-              (progn
-                (cdlatex-turn-on-help
-                 (concat (format header-format prefix)
-                         (if (assoc level bindings)
-                             (concat "  Direct binding are `"
-                                     (cdr (assoc level bindings)) "' etc.")
-                           ""))
-                 level alist help-is-on nil)))
-          (message prompt-format level max-level)
-          (if (and (not help-is-on)
-                   (sit-for cdlatex-auto-help-delay))
-              (setq char ?\?)
-            (setq char (read-char)))
-          (cond
-           ((= char ?\C-g)
-            (keyboard-quit))
-           ((= char ?\?)
-            (if help-is-on
-                (progn
-                  (setq help-is-on (+ help-is-on (- (window-height) 1)))
-                  (if (> help-is-on (count-lines (point-min) (point-max)))
-                      (setq help-is-on 1)))
-              (setq help-is-on 1)))
-           ((or (= char ?\ )
-                (equal char prefix))
-            (setq level (if (= level cdlatex-math-symbol-no-of-levels)
-                            1
-                          (1+ level))))
-           (t (throw 'exit (cons char level)))))))))
-
-;; The following code implements the possibility to modify a character
-;; by an accent or style when point is behind it.  This is more naturally
-;; then the usual way.  E.g. \tilde{a}  can be typed as a'~
-
-(defun cdlatex-math-modify (arg)
-  "Modify previous char/group/macro with math accent/style.
-This macro modifies the character or TeX macro or TeX group BEFORE point
-with a math accent or a style.
-If the character before point is white space, an empty modifying form
-is inserted and the cursor positioned properly.
-If the object before point looks like word, this macro modifies the last
-character of it.  The math-related changes happen only when the cursor
-is actually inside a LaTeX math environment.
-Some of the modification characters denote font style changes like bold
-or italic.  These also work in text mode, on the word before point or,
-if applicable, the active region.
-  In normal text, it does just a self-insert.
-The accent and style commands and their properties are defined in the
-constant `cdlatex-math-modify-alist'."
-  (interactive "P")
-  (catch 'exit
-
-    (let ((inside-math (cdlatex--texmathp))
-          (win (selected-window))
-          (savedpos (make-marker))
-          char (help-is-on nil) ass acc rmdot it cmd extrabrac
-          before after)
-      (catch 'exit1
-        (save-window-excursion
-          (while t
-            (if help-is-on
-                (progn
-                  (cdlatex-turn-on-help
-                   "AVAILABLE MODIFIERS. (?=SCROLL)"
-                   (if inside-math 1 2)
-                   cdlatex-math-modify-alist-comb help-is-on t)
-                  (message "Math modify: "))
-              (message "Math modify: (?=HELP)"))
-
-            (if (and (not help-is-on)
-                     (sit-for cdlatex-auto-help-delay))
-                (setq char ?\?)
-              (setq char (read-char)))
-
-            (cond
-             ((= char ?\C-g)
-              (keyboard-quit))
-             ((= char ?\?)
-              (if help-is-on
-                  (progn
-                    (setq help-is-on (+ help-is-on (- (window-height) 1)))
-                    (if (> help-is-on (count-lines (point-min) (point-max)))
-                        (setq help-is-on 1)))
-                (setq help-is-on 1)))
-             ((equal char cdlatex-math-modify-prefix)
-              (select-window win)
-              (insert cdlatex-math-modify-prefix)
-              (message "")
-              (throw 'exit t))
-             (t (throw 'exit1 t))))))
-      (message "")
-      (setq ass (assoc char cdlatex-math-modify-alist-comb))
-      (if (not ass)
-          (progn
-            (insert cdlatex-math-modify-prefix char)
-            (throw 'exit t)))
-      (setq ass    (cdr ass))
-      (setq cmd    (nth (if inside-math 0 1) ass))
-      (setq acc    (nth 2 ass))
-      (setq rmdot  (nth 3 ass))
-      (setq it     (nth 4 ass))
-      (if (not cmd) (error "No such modifier `%c' %s math mode" char
-                           (if inside-math "inside" "outside")))
-      (if (string-match "\\(.*\\)\\?\\(.*\\)" cmd)
-          (setq before (match-string 1 cmd) after (match-string 2 cmd)))
-      (cond
-       ((cdlatex-region-active-p)
-        (let ((beg (min (region-beginning) (region-end)))
-              (end (max (region-beginning) (region-end))))
-          (goto-char end)
-          (move-marker savedpos (point))
-          (goto-char beg)
-          (if before
-              (insert before)
-            (insert "{")
-            (if acc (forward-char -1))
-            (insert cmd)
-            (if (not acc) (insert " ")))
-          (goto-char savedpos)
-          (if after
-              (insert after)
-            (insert "}"))))
-       (arg
-        (move-marker savedpos (point))
-        (backward-word arg)
-        (if before
-            (insert before)
-          (insert "{")
-          (if acc (forward-char -1))
-          (insert cmd)
-          (if (not acc) (insert " ")))
-        (goto-char savedpos)
-        (if after
-            (insert after)
-          (insert "}")))
-       ((or (bolp)
-            (not cdlatex-modify-backwards)
-            (memq (preceding-char) '(?\  ?$ ?- ?{ ?\( )))
-        ;; Just insert empty form and position cursor
-        (if (string-match "\\?" cmd)
-            (insert cmd)
-          (if acc
-              (insert cmd "{?")
-            (insert "{" cmd " ?"))
-          (if it (insert "\\/"))
-          (insert "}"))
-        (search-backward "?")
-        (delete-char 1))
-       (t
-        ;; Modify preceding character or word
-        (move-marker savedpos (point))
-        (if (= (preceding-char) ?\})
-            ;; its a group
-            (progn (setq extrabrac nil)
-                   (backward-list 1)
-                   (if (not acc) (forward-char 1)))
-          ;; not a group
-          (forward-char -1)
-          (if (looking-at "[a-zA-Z]")
-              ;; a character: look if word or macro
-              (progn
-                (setq extrabrac t)
-                (re-search-backward "[^a-zA-Z]")
-                (cond
-                 ((= (following-char) ?\\))
-                 ((not inside-math) (forward-char 1))
-                 (t (goto-char savedpos)
-                    (forward-char -1)
-                    (if (and rmdot (let (case-fold-search) (looking-at 
"[ij]")))
-                        (progn (insert "\\")
-                               (forward-char 1)
-                               (insert "math")
-                               (move-marker savedpos (point))
-                               (forward-char -6))))))
-            (setq extrabrac t)))
-        (if extrabrac (progn (insert "{")
-                             (if acc (forward-char -1))))
-        (insert cmd)
-        (if (not acc) (insert " "))
-        (goto-char savedpos)
-        (if extrabrac (insert "}")))))))
-
-;; And here is the help function for the symbol insertions stuff
-
-(defun cdlatex-turn-on-help (header level alist offset &optional sparse)
-  "Show help-window for ALIST."
-  (let ((cnt 0) (all-chars "")
-        (flock (cdlatex-use-fonts)) this-char value)
-    (if sparse
-        (setq all-chars (concat (mapcar #'car alist)))
-      (setq all-chars "aA0 bB1!cC2@dD3#eE4$fF5%gG6^hH7&iI8
-jJ9?kK+~lL-_mM*|nN/\\oO=\"pP()qQ[]rR{}sS<>tT`'uU.:vV
-
-wW
-
-xX
-
-yY
-
-zZ
-
-"))
-    (if (get-buffer-window " *CDLaTeX Help*")
-        (select-window (get-buffer-window " *CDLaTeX Help*"))
-      (switch-to-buffer-other-window " *CDLaTeX Help*"))
-    (if buffer-read-only (read-only-mode 'toggle))
-    (erase-buffer)
-    (make-local-variable 'truncate-lines)
-    (setq truncate-lines t)
-    (insert (concat header "\n\n"))
-
-    (while (not (equal "" all-chars))
-      (setq cnt (1+ cnt))
-      (setq this-char (string-to-char all-chars))
-      (setq all-chars (substring all-chars 1))
-      (cond
-       ( (= this-char ?\?)
-         (setq value "SCROLL"))
-       ( (= this-char ?\C-m)
-         (setq this-char ?\ )
-         (setq value ""))
-       ( t
-         (setq value (nth level (assoc this-char alist)))
-         (if (not value) (setq value ""))
-         (if (string-match "\\(.*?\\) \\? \\(.*\\)" value)
-             (setq value (concat (match-string 1 value) (match-string 2 
value))))))
-      (setq this-char (char-to-string this-char)
-            value (if (> (length value) 15)
-                      (concat (substring value 0 13) "..")
-                    (substring (concat value "               ") 0 15)))
-      (if flock
-          (put-text-property 0  15
-                             'face 'font-lock-keyword-face value))
-
-      (insert this-char "  " value "  ")
-      (if (= (* 4 (/ cnt 4)) cnt) (insert "\n")))
-    (unless (one-window-p t)
-      (enlarge-window (1+(- (count-lines 1 (point)) (window-height)))))
-    (goto-char (point-min)) (forward-line (1- offset))
-    (beginning-of-line 1)
-    (recenter 0)))
-
-;;; ---------------------------------------------------------------------------
-;;;
-;;; Data Section: Definition of large constants
-
-(defconst cdlatex-command-alist-default
-  '(
-    ("pref"      "Make page reference"
-     "" reftex-reference nil t t)
-    ("ref"       "Make reference"
-     "" reftex-reference nil t t)
-
-    ("lbl"       "Insert automatic label at point"
-     "" reftex-label nil t t)
-
-    ("ct"        "Insert \\cite"
-     "\\cite{?}" cdlatex-position-cursor nil t nil)
-    ("cte"       "Make a citation interactively"
-     "" reftex-citation nil t nil)
-    ("cite{"       "Make a citation interactively"
-     "cite{" reftex-citation nil t nil)
-
-    ("beg"       "Complete an environment name and insert template"
-     "" cdlatex-environment nil t t)
-    ("env"       "Complete an environment name and insert template"
-     "" cdlatex-environment nil t t)
-    ("it"        "New item in current environment"
-     "" cdlatex-item nil t t)
-    ("ite"       "Insert an ITEMIZE environment template"
-     "" cdlatex-environment ("itemize") t nil)
-    ("enu"       "Insert an ENUMERATE environment template"
-     "" cdlatex-environment ("enumerate") t nil)
-    ("equ"       "Insert an EQUATION environment template"
-     "" cdlatex-environment ("equation") t nil)
-    ("eqn"       "Insert an EQUATION environment template"
-     "" cdlatex-environment ("eqnarray") t nil)
-    ("ali"       "Insert an ALIGN environment template"
-     "" cdlatex-environment ("align") t nil)
-    ("ali*"      "Insert an ALIGN* environment template"
-     "" cdlatex-environment ("align*") t nil)
-    ("alit"      "Insert an ALIGNAT environment template"
-     "" cdlatex-environment ("alignat") t nil)
-    ("alit*"     "Insert an ALIGNAT* environment template"
-     "" cdlatex-environment ("alignat*") t nil)
-    ("xal"       "Insert a XALIGNAT environment template"
-     "" cdlatex-environment ("xalignat") t nil)
-    ("xal*"      "Insert a XALIGNAT* environment template"
-     "" cdlatex-environment ("xalignat*") t nil)
-    ("xxa"       "Insert a XXALIGNAT environment template"
-     "" cdlatex-environment ("xxalignat") t nil)
-    ("xxa*"      "Insert a XXALIGNAT environment template"
-     "" cdlatex-environment ("xxalignat") t nil)
-    ("mul"       "Insert a MULTINE environment template"
-     "" cdlatex-environment ("multline") t nil)
-    ("mul*"      "Insert a MULTINE* environment template"
-     "" cdlatex-environment ("multline*") t nil)
-    ("gat"       "Insert a GATHER environment template"
-     "" cdlatex-environment ("gather") t nil)
-    ("gat*"      "Insert a GATHER* environment template"
-     "" cdlatex-environment ("gather*") t nil)
-    ("spl"       "Insert SPLIT environment template"
-     "" cdlatex-environment ("split") nil t)
-    ("fla"       "Insert a FLALIGN environment template"
-     "" cdlatex-environment ("flalign") t nil)
-    ("fla*"      "Insert a FLALIGN* environment template"
-     "" cdlatex-environment ("flalign*") t nil)
-    ("fg"        "Insert a FIGURE environment template"
-     "" cdlatex-environment ("figure") t nil)
-
-    ("sn"        "Insert a \\section{} statement"
-     "\\section{?}" cdlatex-position-cursor nil t nil)
-    ("ss"        "Insert a \\subsection{} statement"
-     "\\subsection{?}" cdlatex-position-cursor nil t nil)
-    ("sss"       "Insert a \\subsubsection{} statement"
-     "\\subsubsection{?}" cdlatex-position-cursor nil t nil)
-    ("pf"        "Insert a \\paragraph{} statement"
-     "\\paragraph{?}" cdlatex-position-cursor nil t nil)
-    ("sp"        "Insert a \\subparagraph{} statement"
-     "\\subparagraph{?}" cdlatex-position-cursor nil t nil)
-    ("ssp"       "Insert a \\subsubparagraph{} statement"
-     "\\subsubparagraph{?}" cdlatex-position-cursor nil t nil)
-
-    ("cl"        "Insert \\centerline"
-     "\\centerline{?}" cdlatex-position-cursor nil t nil)
-    ("inc"        "Insert \\includegraphics with file name"
-     "\\includegraphics[]{?}" (lambda ()
-                                (cdlatex-position-cursor)
-                                (call-interactively 'cdlatex-insert-filename)
-                                (forward-char 1))
-     nil t nil)
-    ("lr("       "Insert a \\left( \\right) pair"
-     "(" cdlatex-lr-pair nil nil t)
-    ("lr["        "Insert a \\left[ \\right] pair"
-     "[" cdlatex-lr-pair nil nil t)
-    ("lr{"        "Insert a \\left{ \\right} pair"
-     "{" cdlatex-lr-pair nil nil t)
-    ("lr<"        "Insert a \\left\\langle \\right\\rangle pair"
-     "<" cdlatex-lr-pair nil nil t)
-    ("lr|"        "Insert a \\left| \\right| pair"
-     "|" cdlatex-lr-pair nil nil t)
-    ("caseeq"     "Insert a = { construct"
-     "\\left\\{ \n\\begin{array}{l@{\\quad:\\quad}l}\n? & \\\\\n & 
\n\\end{array}\\right." cdlatex-position-cursor nil nil t)
-    ("fr"         "Insert \\frac{}{}"
-     "\\frac{?}{}"           cdlatex-position-cursor nil nil t)
-    ("sq"         "Insert \\sqrt{}"
-     "\\sqrt{?}"             cdlatex-position-cursor nil nil t)
-    ("intl"       "Insert \\int\\limits_{}^{}"
-     "\\int\\limits_{?}^{}"  cdlatex-position-cursor nil nil t)
-    ("suml"       "Insert \\sum\\limits_{}^{}"
-     "\\sum\\limits_{?}^{}"  cdlatex-position-cursor nil nil t)
-    ("nonum"      "Insert \\nonumber\\\\"
-     "\\nonumber\\\\\n"      nil nil nil t)
-    ("fn"         "Make a footnote"
-     "\\footnote{?}" cdlatex-position-cursor nil t nil)
-    ("qq"         "Insert \\quad"
-     "\\quad"        nil nil t t)
-    ("qqq"        "Insert \\qquad"
-     "\\qquad"       nil nil t t)
-    )
-  "Default for `cdlatex-command-alist'.")
-
-(defconst cdlatex-math-modify-alist-default
-  '(
-    ( ?\.   "\\dot"               nil        t   t   nil )
-    ( ?\:   "\\ddot"              nil        t   t   nil )
-    ( ?\~   "\\tilde"             nil        t   t   nil )
-    ( ?N    "\\widetilde"         nil        t   t   nil )
-    ( ?^    "\\hat"               nil        t   t   nil )
-    ( ?H    "\\widehat"           nil        t   t   nil )
-    ( ?\-   "\\bar"               nil        t   t   nil )
-    ( ?T    "\\overline"          nil        t   nil nil )
-    ( ?\_   "\\underline"         nil        t   nil nil )
-    ( ?\]    "\\overbrace"         nil        t   nil nil )
-    ( ?\}   "\\underbrace"        nil        t   nil nil )
-    ( ?\>   "\\vec"               nil        t   t   nil )
-    ( ?/    "\\grave"             nil        t   t   nil )
-    ( ?\\   "\\acute"             nil        t   t   nil )
-    ( ?v    "\\check"             nil        t   t   nil )
-    ( ?u    "\\breve"             nil        t   t   nil )
-    ( ?m    "\\mbox"              nil        t   nil nil )
-    ( ?t    "\\text"              nil        t   nil nil )
-    ( ?c    "\\mathcal"           nil        t   nil nil )
-    ( ?r    "\\mathrm"            "\\textrm" t   nil nil )
-    ( ?i    "\\mathit"            "\\textit" t   nil nil )
-    ( ?l    nil                   "\\textsl" t   nil nil )
-    ( ?b    "\\mathbf"            "\\textbf" t   nil nil )
-    ( ?e    "\\mathem"            "\\emph"   t   nil nil )
-    ( ?y    "\\mathtt"            "\\texttt" t   nil nil )
-    ( ?f    "\\mathsf"            "\\textsf" t   nil nil )
-    ( ?0    "\\textstyle"         nil        nil nil nil )
-    ( ?1    "\\displaystyle"      nil        nil nil nil )
-    ( ?2    "\\scriptstyle"       nil        nil nil nil )
-    ( ?3    "\\scriptscriptstyle" nil        nil nil nil )
-    ( ?\(    "\\left( ? \\right)"  nil        nil nil nil )
-    ( ?\[    "\\left[ ? \\right]"  nil        nil nil nil )
-    ( ?\{    "\\left\\{ ? \\right\\}" nil     nil nil nil )
-    ( ?<    "\\left< ? \\right>"  nil        nil nil nil )
-    ( ?|    "\\left| ? \\right|"  nil        nil nil nil )
-    )
-  "Default for `cdlatex-math-modify-alist'.")
-
-(defconst cdlatex-math-symbol-alist-default
-  '(
-    ( ?a  ("\\alpha"          ))
-    ( ?A  ("\\forall"         "\\aleph"))
-    ( ?b  ("\\beta"           ))
-    ( ?B  (""                 ))
-    ( ?c  (""                 ""                "\\cos"))
-    ( ?C  (""                 ""                "\\arccos"))
-    ( ?d  ("\\delta"          "\\partial"))
-    ( ?D  ("\\Delta"          "\\nabla"))
-    ( ?e  ("\\epsilon"        "\\varepsilon"    "\\exp"))
-    ( ?E  ("\\exists"         ""                "\\ln"))
-    ( ?f  ("\\phi"            "\\varphi"))
-    ( ?F  (""                 ))
-    ( ?g  ("\\gamma"          ""                "\\lg"))
-    ( ?G  ("\\Gamma"          ""                "10^{?}"))
-    ( ?h  ("\\eta"            "\\hbar"))
-    ( ?H  (""                 ))
-    ( ?i  ("\\in"             "\\imath"))
-    ( ?I  (""                 "\\Im"))
-    ( ?j  (""                 "\\jmath"))
-    ( ?J  (""                 ))
-    ( ?k  ("\\kappa"          ))
-    ( ?K  (""                 ))
-    ( ?l  ("\\lambda"         "\\ell"           "\\log"))
-    ( ?L  ("\\Lambda"         ))
-    ( ?m  ("\\mu"             ))
-    ( ?M  (""                 ))
-    ( ?n  ("\\nu"             ""                "\\ln"))
-    ( ?N  ("\\nabla"          ""                "\\exp"))
-    ( ?o  ("\\omega"          ))
-    ( ?O  ("\\Omega"          "\\mho"))
-    ( ?p  ("\\pi"             "\\varpi"))
-    ( ?P  ("\\Pi"             ))
-    ( ?q  ("\\theta"          "\\vartheta"))
-    ( ?Q  ("\\Theta"          ))
-    ( ?r  ("\\rho"            "\\varrho"))
-    ( ?R  (""                 "\\Re"))
-    ( ?s  ("\\sigma"          "\\varsigma"      "\\sin"))
-    ( ?S  ("\\Sigma"          ""                "\\arcsin"))
-    ( ?t  ("\\tau"            ""                "\\tan"))
-    ( ?T  (""                 ""                "\\arctan"))
-    ( ?u  ("\\upsilon"        ))
-    ( ?U  ("\\Upsilon"        ))
-    ( ?v  ("\\vee"            ))
-    ( ?V  ("\\Phi"            ))
-    ( ?w  ("\\xi"             ))
-    ( ?W  ("\\Xi"             ))
-    ( ?x  ("\\chi"            ))
-    ( ?X  (""                 ))
-    ( ?y  ("\\psi"            ))
-    ( ?Y  ("\\Psi"            ))
-    ( ?z  ("\\zeta"           ))
-    ( ?Z  (""                 ))
-    ( ?   (""                 ))
-    ( ?0  ("\\emptyset"       ))
-    ( ?1  (""                 ))
-    ( ?2  (""                 ))
-    ( ?3  (""                 ))
-    ( ?4  (""                 ))
-    ( ?5  (""                 ))
-    ( ?6  (""                 ))
-    ( ?7  (""                 ))
-    ( ?8  ("\\infty"          ))
-    ( ?9  (""                 ))
-    ( ?!  ("\\neg"            ))
-    ( ?@  (""                 ))
-    ( ?#  (""                 ))
-    ( ?$  (""                 ))
-    ( ?%  (""                 ))
-    ( ?^  ("\\uparrow"        ))
-    ( ?&  ("\\wedge"          ))
-    ( ?\? (""                 ))
-    ( ?~  ("\\approx"         "\\simeq"))
-    ( ?_  ("\\downarrow"      ))
-    ( ?+  ("\\cup"            ))
-    ( ?-  ("\\leftrightarrow" "\\longleftrightarrow" ))
-    ( ?*  ("\\times"          ))
-    ( ?/  ("\\not"            ))
-    ( ?|  ("\\mapsto"         "\\longmapsto"))
-    ( ?\\ ("\\setminus"       ))
-    ( ?\" (""                 ))
-    ( ?=  ("\\Leftrightarrow" "\\Longleftrightarrow"))
-    ( ?\( ("\\langle"         ))
-    ( ?\) ("\\rangle"         ))
-    ( ?\[ ("\\Leftarrow"      "\\Longleftarrow"))
-    ( ?\] ("\\Rightarrow"     "\\Longrightarrow"))
-    ( ?{  ("\\subset"         ))
-    ( ?}  ("\\supset"         ))
-    ( ?<  ("\\leftarrow"      "\\longleftarrow"     "\\min"))
-    ( ?>  ("\\rightarrow"     "\\longrightarrow"    "\\max"))
-    ( ?`  (""                 ))
-    ( ?'  ("\\prime"          ))
-    ( ?.  ("\\cdot"           ))
-    )
-  "Default for `cdlatex-math-symbol-alist'.")
-
-;;; ---------------------------------------------------------------------------
-
-(defconst cdlatex-env-alist-default
-  '(
-;;------------------------------------
-( "abstract"
-"\\begin{abstract}
-?
-\\end{abstract}"
-nil
-)
-;;------------------------------------
-( "appendix"
-"\\begin{appendix}
-?
-\\end{appendix}"
-nil
-)
-;;------------------------------------
-( "array"
-"\\begin{array}[tb]{?lcrp{width}*{num}{lcrp{}}|}
- & & & \\\\
-\\end{array}"
-" & & &"
-)
-;;------------------------------------
-( "center"
-"\\begin{center}
-? \\\\
-\\end{center}"
-nil
-)
-;;------------------------------------
-( "deflist"
-"\\begin{deflist}{width-text}
-\\item ?
-\\end{deflist}"
-"\\item ?"
-)
-;;------------------------------------
-( "description"
-"\\begin{description}
-\\item[?]
-\\end{description}"
-"\\item[?] "
-)
-;;------------------------------------
-( "displaymath"
-"\\begin{displaymath}
-?
-\\end{displaymath}"
-nil
-)
-;;------------------------------------
-( "document"
-"\\begin{document}
-?
-\\end{document}"
-nil
-)
-;;------------------------------------
-( "enumerate"
-"\\begin{enumerate}
-\\itemAUTOLABEL ?
-\\end{enumerate}"
-"\\itemAUTOLABEL ?"
-)
-;;------------------------------------
-( "eqnarray"
-"\\begin{eqnarray}
-AUTOLABEL
-? &  & \\\\
-\\end{eqnarray}"
-"\\\\AUTOLABEL
-? &  & "
-)
-;;------------------------------------
-( "eqnarray*"
-"\\begin{eqnarray*}
-? & & \\\\
-\\end{eqnarray*}"
-"\\\\? & & "
-)
-;;------------------------------------
-( "equation"
-"\\begin{equation}
-AUTOLABEL
-?
-\\end{equation}"
-nil
-)
-;;------------------------------------
-( "figure"
-"\\begin{figure}[htbp]
-\\centerline{\\includegraphics[]{AUTOFILE}}
-\\caption[]{AUTOLABEL ?}
-\\end{figure}"
-nil
-)
-;;------------------------------------
-( "figure*"
-"\\begin{figure*}[htbp]
-\\centerline{\includegraphics[]{AUTOFILE}
-\\end{figure*}"
-nil
-)
-;;------------------------------------
-( "flushleft"
-"\\begin{flushleft}
-? \\\\
-\\end{flushleft}"
-"\\\\?"
-)
-;;------------------------------------
-( "flushright"
-"\\begin{flushright}
-? \\\\
-\\end{flushright}"
-"\\\\?"
-)
-;;------------------------------------
-( "fussypar"
-"\\begin{fussypar}
-?
-\\end{fussypar}"
-nil
-)
-;;------------------------------------
-( "itemize"
-"\\begin{itemize}
-\\item ?
-\\end{itemize}"
-"\\item ?"
-)
-;;------------------------------------
-( "letter"
-"\\begin{letter}
-?
-\\end{letter}"
-nil
-)
-;;------------------------------------
-( "list"
-"\\begin{list}{}{}
-\\item ?
-\\end{list}"
-"\\item ?"
-)
-;;------------------------------------
-( "math"
-"\\begin{math}
-?
-\\end{math}"
-nil
-)
-;;------------------------------------
-( "minipage"
-"\\begin{minipage}[bt]{?.cm}
-
-\\end{minipage}"
-nil
-)
-;;------------------------------------
-( "picture"
-"\\begin{picture}(,)(,)
-?
-\\end{picture}"
-nil
-)
-;;------------------------------------
-( "quotation"
-"\\begin{quotation}
-?
-\\end{quotation}"
-nil
-)
-;;------------------------------------
-( "quote"
-"\\begin{quote}
-?
-\\end{quote}"
-nil
-)
-;;------------------------------------
-( "sloppypar"
-"\\begin{sloppypar}
-?
-\\end{sloppypar}"
-nil
-)
-;;------------------------------------
-( "tabbing"
-"\\begin{tabbing}
-? \\=  \\=  \\=  \\= \\\\[0.5ex]
- \\>  \\>  \\>  \\> \\\\
-\\end{tabbing}"
-"\\\\?"
-)
-;;------------------------------------
-( "table"
-"\\begin{table}[htbp]
-\\caption[]{AUTOLABEL ?}
-\\vspace{4mm}
-
-\\end{table}"
-nil
-)
-;;------------------------------------
-( "tabular"
-"\\begin{tabular}[tb]{lcrp{width}*{num}{lcrp{}}|}
-?
-\\end{tabular}"
-nil
-)
-;;------------------------------------
-( "tabular*"
-"\\begin{tabular*}{width}[tb]{lcrp{width}*{num}{lcrp{}}|}
-?
-\\end{tabular*}"
-nil
-)
-;;------------------------------------
-( "thebibliography"
-"\\begin{thebibliography}{}
-
-\\bibitem[?]{}
-
-\\end{thebibliography}"
-"
-\\bibitem[?]{}
-")
-;;------------------------------------
-( "theindex"
-"\\begin{theindex}
-?
-\\end{theindex}"
-nil
-)
-;;------------------------------------
-( "titlepage"
-"\\begin{titlepage}
-
-\\title{?}
-
-\\author{
- \\\\
- \\\\
-%\\thanks{}
-%\\and
-}
-
-\\date{\\today}
-
-\\end{titlepage}"
-nil
-)
-;;------------------------------------
-( "trivlist"
-"\\begin{trivlist}
-?
-\\end{trivlist}"
-nil
-)
-;;------------------------------------
-( "verbatim"
-"\\begin{verbatim}
-?
-\\end{verbatim}"
-nil
-)
-;;------------------------------------
-( "verbatim*"
-"\\begin{verbatim*}
-?
-\\end{verbatim*}"
-nil
-)
-;;------------------------------------
-( "verse"
-"\\begin{verse}
-? \\\\
-\\end{verse}"
-nil
-)
-;;------------------------------------
-;; AMS-LaTeX
-( "align"
-"\\begin{align}
-AUTOLABEL
-?
-\\end{align}"
-"\\\\AUTOLABEL
-?")
-;;------------------------------------
-( "align*"
-"\\begin{align*}
-?
-\\end{align*}"
-"\\\\?")
-;;------------------------------------
-( "alignat"
-"\\begin{alignat}{?}
-AUTOLABEL
-
-\\end{alignat}"
-"\\\\AUTOLABEL
-?")
-;;------------------------------------
-( "alignat*"
-"\\begin{alignat*}{?}
-
-\\end{alignat*}"
-"\\\\?")
-;;------------------------------------
-( "xalignat"
-"\\begin{xalignat}{?}
-AUTOLABEL
-
-\\end{xalignat}"
-"\\\\AUTOLABEL
-?")
-;;------------------------------------
-( "xalignat*"
-"\\begin{xalignat*}{?}
-
-\\end{xalignat*}"
-"\\\\?")
-;;------------------------------------
-( "xxalignat"
-"\\begin{xxalignat}{?}
-
-\\end{xxalignat}"
-"\\\\?")
-;;------------------------------------
-("multline"
-"\\begin{multline}
-AUTOLABEL
-?
-\\end{multline}"
-"\\\\AUTOLABEL
-?")
-;;------------------------------------
-("multline*"
-"\\begin{multline*}
-?
-\\end{multline*}"
-"?")
-;;------------------------------------
-( "flalign"
-"\\begin{flalign}
-AUTOLABEL
-?
-\\end{flalign}"
-"\\\\AUTOLABEL
-?"
-)
-;;------------------------------------
-( "flalign*"
-"\\begin{flalign*}
-?
-\\end{flalign*}"
-"\\\\?"
-)
-;;------------------------------------
-( "gather"
-"\\begin{gather}
-AUTOLABEL
-?
-\\end{gather}"
-"\\\\AUTOLABEL
-?")
-;;------------------------------------
-( "gather*"
-"\\begin{gather*}
-?
-\\end{gather*}"
-"\\\\?")
-;;------------------------------------
-( "split"
-"\\begin{split}
-?
-\\end{split}"
-"\\\\?")
-;;------------------------------------
-;;; SOME NON-STANDARD ENVIRONMENTS
-;; figure environment for the epsf macro package
-( "epsfigure"
-"\\begin{figure}[htbp]
-\\centerline{\\epsfxsize=\\textwidth \\epsffile{?.eps}}
-\\caption[]{AUTOLABEL}
-\\end{figure}"
-nil
-)
-;;------------------------------------
-;; table environment for AASTeX
-( "deluxetable"
-"\\begin{deluxetable}{?lcrp{width}*{num}{lcrp{}}}
-\\tablecolumns{}
-\\tablewidth{0pt}
-\\tablecaption{AUTOLABEL }
-\\tablehead{ \\colhead{} & \colhead{} & \\multicolumn{3}{c}{} }
-\\startdata
- &  & \\nl
-\\enddata
-\\end{deluxetable}"
-nil
-)
-;;------------------------------------
-;; figure environments for A&A
-( "aafigure"
-"\\begin{figure}
-\\resizebox{\\hsize}{!}{\\includegraphics{?.eps}}
-\\caption[]{AUTOLABEL}
-\\end{figure}"
-nil
-)
-;;------------------------------------
-( "aafigure*"
-"\\begin{figure*}
-\\resizebox{12cm}{!}{\\includegraphics{?.eps}}
-\\caption[]{AUTOLABEL}
-\\end{figure*}"
-nil
-)
-))
-
-;;; ---------------------------------------------------------------------------
-;;;
-;;; Functions to compile the tables, reset the mode etc.
-
-(defun cdlatex-reset-mode ()
-  "Reset CDLaTeX Mode.
-Required to implement changes to some list variables.  This
-function will compile the information in `cdlatex-label-alist'
-and similar variables.  It is called when CDLaTeX is first used,
-and after changes to these variables via
-`cdlatex-add-to-label-alist'."
-  (interactive)
-  (cdlatex-compute-tables))
-
-(defalias 'cdlatex-nop #'ignore)
-
-(defun cdlatex-compute-tables ()
-  "Update tables not connected with ref and cite support."
-  (setq cdlatex-env-alist-comb
-        (cdlatex-uniquify
-         (append cdlatex-env-alist
-                 cdlatex-env-alist-default)))
-  ;; Merge the user specified lists with the defaults
-  (setq cdlatex-command-alist-comb
-        (cdlatex-uniquify
-         (append cdlatex-command-alist
-                 cdlatex-command-alist-default)))
-  (setq cdlatex-math-symbol-alist-comb
-        (cdlatex-uniquify
-         (mapcar (lambda (x)
-                   (if (listp (nth 1 x))
-                       (cons (car x) (nth 1 x))
-                     x))
-                 (append cdlatex-math-symbol-alist
-                         cdlatex-math-symbol-alist-default))))
-  (setq cdlatex-math-modify-alist-comb
-        (cdlatex-uniquify
-         (append cdlatex-math-modify-alist
-                 cdlatex-math-modify-alist-default)))
-
-  ;; find out how many levels are needed for the math symbol stuff
-  (let ((maxlev 0) (list cdlatex-math-symbol-alist-comb))
-    (while (pop list)
-      (setq maxlev (max maxlev (length (nth 1 list)))
-            list (cdr list)))
-    (setq cdlatex-math-symbol-no-of-levels (1- maxlev)))
-
-  ;; The direct key bindings.
-  (let (map dummy-map prefix modifiers symbol bindings)
-    (cl-loop for level from 1 to cdlatex-math-symbol-no-of-levels do
-             (setq dummy-map (make-sparse-keymap))
-             (setq prefix (car (nth (1- level)
-                                    cdlatex-math-symbol-direct-bindings)))
-             (setq modifiers (cdr
-                              (nth (1- level)
-                                   cdlatex-math-symbol-direct-bindings)))
-             (when (or prefix modifiers)
-               (cond
-                ((stringp prefix) (setq prefix (read-kbd-macro prefix)))
-                ((integerp prefix) (setq prefix (vector prefix))))
-
-               (if (null prefix)
-                   (setq map cdlatex-mode-map)
-                 (setq map (make-keymap))
-                 (define-key cdlatex-mode-map prefix (setq map
-                                                           (make-keymap))))
-               (define-key dummy-map
-                           (vector (append modifiers (list ?a))) #'cdlatex-nop)
-               (push (cons level (substitute-command-keys
-                                  "\\<dummy-map>\\[cdlatex-nop]"))
-                     bindings)
-               (mapc (lambda (entry)
-                       (setq symbol (nth level entry))
-                       (when (and symbol (stringp symbol)
-                                  (not (equal "" symbol)))
-                         (define-key
-                          map (vector (append modifiers (list (car entry))))
-                          (list 'lambda '() '(interactive)
-                                (list 'cdlatex-insert-math symbol)))))
-                     cdlatex-math-symbol-alist-comb)))
-    (put 'cdlatex-math-symbol-alist-comb 'cdlatex-bindings bindings)))
-
-(defun cdlatex-insert-math (string)
-  "Insert STRING in math-mode."
-  (cdlatex-ensure-math)
-  (insert string)
-  (if (string-match "\\?" string)
-      (cdlatex-position-cursor)))
-
-;;; Menus --------------------------------------------------------------------
-
-;; Define a menu for the menu bar if Emacs is running under X
-
-(require 'easymenu)
-
-(easy-menu-define
- cdlatex-mode-menu cdlatex-mode-map
- "Menu used in CDLaTeX mode."
- '("CDLTX"
-   ["\\begin{...} \\label"   cdlatex-environment t]
-   ["\\item \\label"         cdlatex-item t]
-   "----"
-   ["Insert Math Symbol"     cdlatex-math-symbol t]
-   ["Modify Math Symbol"     cdlatex-math-modify t]
-   "----"
-   ("Customize"
-    ["Browse CDLaTeX group" cdlatex-customize t]
-    "---"
-    ["Build Full Customize Menu" cdlatex-create-customize-menu
-     (fboundp 'customize-menu-create)])
-   "----"
-   ["Show documentation"      cdlatex-show-commentary t]
-   ["Help with KEYWORD Cmds" cdlatex-command-help t]
-   ["Reset CDLaTeX Mode"       cdlatex-reset-mode t]))
-
-;(eval-after-load "cus-edit"
-;  '(and (fboundp 'customize-menu-create) (cdlatex-create-customize-menu)))
-
-;;; Run Hook ------------------------------------------------------------------
-
-(run-hooks 'cdlatex-load-hook)
-
-;;; That's it! ----------------------------------------------------------------
-
-; Make sure tables are compiled
-(cdlatex-compute-tables)
-
-(provide 'cdlatex)
+(provide 'electricindex)
 
 ;;;============================================================================
 
-;;; cdlatex.el ends here
+;;; electricindex.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]