]> code.delx.au - gnu-emacs/blob - lisp/textmodes/reftex-vars.el
* textmodes/reftex.el (reftex-find-citation-regexp-format):
[gnu-emacs] / lisp / textmodes / reftex-vars.el
1 ;;; reftex-vars.el - Configuration variables for RefTeX
2 ;; Copyright (c) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
3
4 ;; Author: Carsten Dominik <dominik@strw.LeidenUniv.nl>
5 ;; Version: 4.14
6 ;;
7
8 ;; This file is part of GNU Emacs.
9
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
13 ;; any later version.
14
15 ;; GNU Emacs is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;; GNU General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
24
25 (eval-when-compile (require 'cl))
26 (provide 'reftex-vars)
27
28 ;; Define the two constants which are needed during compilation
29
30 (eval-and-compile
31 (defconst reftex-label-alist-builtin
32 '(
33 ;; Some aliases, mostly for backward compatibility
34 (Sideways "Alias for -->rotating" (rotating))
35 (AMSTeX "amsmath with eqref macro"
36 ((nil ?e nil "~\\eqref{%s}")
37 amsmath))
38
39 ;; Individual package defaults
40 (amsmath "AMS-LaTeX math environments"
41 (("align" ?e nil nil eqnarray-like)
42 ("gather" ?e nil nil eqnarray-like)
43 ("multline" ?e nil nil t)
44 ("flalign" ?e nil nil eqnarray-like)
45 ("alignat" ?e nil nil alignat-like)
46 ("xalignat" ?e nil nil alignat-like)
47 ("xxalignat" ?e nil nil alignat-like)
48 ("subequations" ?e nil nil t)))
49
50 (endnotes "The \\endnote macro"
51 (("\\endnote[]{}" ?N "en:" "~\\ref{%s}" 2
52 (regexp "endnotes?" "notes?" "Anmerkung\\(en\\)?" "Anm\\."))))
53
54 (fancybox "The Beqnarray environment"
55 (("Beqnarray" ?e nil nil eqnarray-like)))
56
57 (floatfig "The floatingfigure environment"
58 (("floatingfigure" ?f nil nil caption)))
59
60 (longtable "The longtable environment"
61 (("longtable" ?t nil nil caption)))
62
63 (picinpar "The figwindow and tabwindow environments"
64 (("figwindow" ?f nil nil 1)
65 ("tabwindow" ?f nil nil 1)))
66
67 (rotating "Sidewaysfigure and table"
68 (("sidewaysfigure" ?f nil nil caption)
69 ("sidewaystable" ?t nil nil caption)))
70
71 (sidecap "CSfigure and SCtable"
72 (("SCfigure" ?f nil nil caption)
73 ("SCtable" ?t nil nil caption)))
74
75 (subfigure "Subfigure environments/macro"
76 (("subfigure" ?f nil nil caption)
77 ("subfigure*" ?f nil nil caption)
78 ("\\subfigure[]{}" ?f nil nil 1)))
79
80 (supertab "Supertabular environment"
81 (("supertabular" ?t nil nil "\\tablecaption{")))
82
83 (wrapfig "The wrapfigure environment"
84 (("wrapfigure" ?f nil nil caption)))
85
86 ;; The LaTeX core stuff
87 (LaTeX "LaTeX default environments"
88 (("section" ?s "%S" "~\\ref{%s}" (nil . t)
89 (regexp "parts?" "chapters?" "chap\\." "sections?" "sect?\\."
90 "paragraphs?" "par\\."
91 "\\\\S" "\247" "Teile?" "Kapitel" "Kap\\." "Abschnitte?"
92 "appendi\\(x\\|ces\\)" "App\\." "Anh\"?ange?" "Anh\\."))
93
94 ("enumerate" ?i "item:" "~\\ref{%s}" item
95 (regexp "items?" "Punkte?"))
96
97 ("equation" ?e "eq:" "~(\\ref{%s})" t
98 (regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?" "Gl\\."))
99 ("eqnarray" ?e "eq:" nil eqnarray-like)
100
101 ("figure" ?f "fig:" "~\\ref{%s}" caption
102 (regexp "figure?[sn]?" "figs?\\." "Abbildung\\(en\\)?" "Abb\\."))
103 ("figure*" ?f nil nil caption)
104
105 ("table" ?t "tab:" "~\\ref{%s}" caption
106 (regexp "tables?" "tab\\." "Tabellen?"))
107 ("table*" ?t nil nil caption)
108
109 ("\\footnote[]{}" ?n "fn:" "~\\ref{%s}" 2
110 (regexp "footnotes?" "Fussnoten?"))
111
112 ("any" ?\ " " "~\\ref{%s}" nil)
113
114 ;; The label macro is hard coded, but it *could* be defined like this:
115 ;;("\\label{*}" nil nil nil nil)
116 ))
117
118 )
119 "The default label environment descriptions.
120 Lower-case symbols correspond to a style file of the same name in the LaTeX
121 distribution. Mixed-case symbols are convenience aliases.")
122
123 (defconst reftex-cite-format-builtin
124 '((default "Default macro \\cite{%l}"
125 "\\cite{%l}")
126 (natbib "The Natbib package"
127 ((?\C-m . "\\cite{%l}")
128 (?t . "\\citet{%l}")
129 (?T . "\\citet*{%l}")
130 (?p . "\\citep{%l}")
131 (?P . "\\citep*{%l}")
132 (?e . "\\citep[e.g.][]{%l}")
133 (?s . "\\citep[see][]{%l}")
134 (?a . "\\citeauthor{%l}")
135 (?A . "\\citeauthor*{%l}")
136 (?y . "\\citeyear{%l}")))
137 (bibentry "The Bibentry package"
138 "\\bibentry{%l}")
139 (harvard "The Harvard package"
140 ((?\C-m . "\\cite{%l}")
141 (?p . "\\cite{%l}")
142 (?t . "\\citeasnoun{%l}")
143 (?n . "\\citeasnoun{%l}")
144 (?s . "\\possessivecite{%l}")
145 (?e . "\\citeaffixed{%l}{?}")
146 (?y . "\\citeyear{%l}")
147 (?a . "\\citename{%l}")))
148 (chicago "The Chicago package"
149 ((?\C-m . "\\cite{%l}")
150 (?t . "\\citeN{%l}")
151 (?T . "\\shortciteN{%l}")
152 (?p . "\\cite{%l}")
153 (?P . "\\shortcite{%l}")
154 (?a . "\\citeA{%l}")
155 (?A . "\\shortciteA{%l}")
156 (?y . "\\citeyear{%l}")))
157 (astron "The Astron package"
158 ((?\C-m . "\\cite{%l}")
159 (?p . "\\cite{%l}" )
160 (?t . "%2a (\\cite{%l})")))
161 (author-year "Do-it-yourself Author-year"
162 ((?\C-m . "\\cite{%l}")
163 (?t . "%2a (%y)\\nocite{%l}")
164 (?p . "(%2a %y\\nocite{%l})")))
165 (locally "Full info in parenthesis"
166 "(%2a %y, %j %v, %P, %e: %b, %u, %s %<)")
167 )
168 "Builtin versions of the citation format.
169 The following conventions are valid for all alist entries:
170 `?\C-m' should always point to a straight \\cite{%l} macro.
171 `?t' should point to a textual citation (citation as a noun).
172 `?p' should point to a parenthetical citation.")
173
174 (defconst reftex-index-macros-builtin
175 '((default "Default \\index and \\glossary macros"
176 (("\\index{*}" "idx" ?i "" nil t)
177 ("\\glossary{*}" "glo" ?g "" nil t)))
178 (multind "The multind.sty package"
179 (("\\index{}{*}" 1 ?i "" nil t)))
180 (index "The index.sty package"
181 (("\\index[]{*}" 1 ?i "" nil t)
182 ("\\index*[]{*}" 1 ?I "" nil nil)))
183 (Index-Shortcut "index.sty with \\shortindexingon"
184 (("\\index[]{*}" 1 ?i "" nil t)
185 ("\\index*[]{*}" 1 ?I "" nil nil)
186 ("^[]{*}" 1 ?^ "" texmathp t)
187 ("_[]{*}" 1 ?_ "" texmathp nil))))
188 "Builtin stuff for reftex-index-macros.
189 Lower-case symbols correspond to a style file of the same name in the LaTeX
190 distribution. Mixed-case symbols are convenience aliases.")
191 )
192
193 ;; Configuration Variables and User Options for RefTeX ------------------
194
195 (defgroup reftex nil
196 "LaTeX label and citation support."
197 :tag "RefTeX"
198 :link '(url-link :tag "Home Page"
199 "http://strw.leidenuniv.nl/~dominik/Tools/")
200 :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
201 :link '(custom-manual "(reftex)Top")
202 :prefix "reftex-"
203 :group 'tex)
204
205 ;; Table of contents configuration --------------------------------------
206
207 (defgroup reftex-table-of-contents-browser nil
208 "A multifile table of contents browser."
209 :group 'reftex)
210
211 (defcustom reftex-toc-max-level 100
212 "*The maximum level of toc entries which will be included in the TOC.
213 Section headings with a bigger level will be ignored. In RefTeX, chapters
214 are level 1, sections are level 2 etc.
215 This variable can be changed from within the *toc* buffer with the `t' key."
216 :group 'reftex-table-of-contents-browser
217 :type 'integer)
218
219 (defcustom reftex-toc-keep-other-windows t
220 "*Non-nil means, split the selected window to display the *toc* buffer.
221 This helps to keep the window configuration, but makes the *toc* small.
222 When nil, all other windows except the selected one will be deleted, so
223 that the *toc* window fills half the frame."
224 :group 'reftex-table-of-contents-browser
225 :type 'boolean)
226
227 (defcustom reftex-toc-include-file-boundaries nil
228 "*Non-nil means, include file boundaries in *toc* buffer.
229 This flag can be toggled from within the *toc* buffer with the `F' key."
230 :group 'reftex-table-of-contents-browser
231 :type 'boolean)
232
233 (defcustom reftex-toc-include-labels nil
234 "*Non-nil means, include labels in *toc* buffer.
235 This flag can be toggled from within the *toc* buffer with the `l' key."
236 :group 'reftex-table-of-contents-browser
237 :type 'boolean)
238
239 (defcustom reftex-toc-include-index-entries nil
240 "*Non-nil means, include index entries in *toc* buffer.
241 This flag can be toggled from within the *toc* buffer with the `i' key."
242 :group 'reftex-table-of-contents-browser
243 :type 'boolean)
244
245 (defcustom reftex-toc-include-context nil
246 "*Non-nil means, include context with labels in the *toc* buffer.
247 Context will only be shown when labels are visible as well.
248 This flag can be toggled from within the *toc* buffer with the `c' key."
249 :group 'reftex-table-of-contents-browser
250 :type 'boolean)
251
252 (defcustom reftex-toc-follow-mode nil
253 "*Non-nil means, point in *toc* buffer will cause other window to follow.
254 The other window will show the corresponding part of the document.
255 This flag can be toggled from within the *toc* buffer with the `f' key."
256 :group 'reftex-table-of-contents-browser
257 :type 'boolean)
258
259 (defcustom reftex-revisit-to-follow nil
260 "*Non-nil means, follow-mode will revisit files if necessary.
261 When nil, follow-mode will be suspended for stuff in unvisited files."
262 :group 'reftex-table-of-contents-browser
263 :group 'reftex-referencing-labels
264 :type 'boolean)
265
266 (defcustom reftex-toc-mode-hook nil
267 "Mode hook for reftex-toc-mode."
268 :group 'reftex-table-of-contents-browser
269 :type 'hook)
270
271 ;; Label Support Configuration
272
273 (defgroup reftex-label-support nil
274 "Support for creation, insertion and referencing of labels in LaTeX."
275 :group 'reftex)
276
277 (defgroup reftex-defining-label-environments nil
278 "Definition of environments and macros to do with label."
279 :group 'reftex-label-support)
280
281 (defcustom reftex-default-label-alist-entries
282 '(amsmath endnotes fancybox floatfig longtable picinpar
283 rotating sidecap subfigure supertab wrapfig LaTeX)
284 "Default label alist specifications. LaTeX should always be the last entry.
285 The value of this variable is a list of symbols with associations in the
286 constant `reftex-label-alist-builtin'. Check that constant for a full list
287 of options."
288 :group 'reftex-defining-label-environments
289 :set 'reftex-set-dirty
290 :type `(set
291 :indent 4
292 :inline t
293 :greedy t
294 ,@(mapcar
295 (lambda (x)
296 (list 'const :tag (concat (symbol-name (nth 0 x))
297 ": " (nth 1 x))
298 (nth 0 x)))
299 reftex-label-alist-builtin)))
300
301 (defcustom reftex-label-alist nil
302 "Alist with information on environments for \\label-\\ref use.
303
304 This docstring is easier to understand after reading the configuration
305 examples in `reftex.el'. Looking at the builtin defaults in the constant
306 `reftex-label-alist-builtin' may also be instructive.
307
308 Set this variable to define additions and changes to the default. The only
309 things you MUST NOT change is that `?s' is the type indicator for section
310 labels, and SPC for the `any' label type. These are hard-coded at other
311 places in the code.
312
313 The value of the variable must be a list of items. Each item is a list
314 itself and has the following structure:
315
316 (ENV-OR-MACRO TYPE-KEY LABEL-PREFIX REFERENCE-FORMAT CONTEXT-METHOD
317 (MAGIC-WORD ... ) TOC-LEVEL)
318
319 Each list entry describes either an environment carrying a counter for use
320 with \\label and \\ref, or a LaTeX macro defining a label as (or inside)
321 one of its arguments. The elements of each list entry are:
322
323 ENV-OR-MACRO
324 Name of the environment (like \"table\") or macro (like \"\\\\myfig\").
325 For macros, indicate the macro arguments for best results, as in
326 \"\\\\myfig[]{}{}{*}{}\". Use square brackets for optional arguments,
327 a star to mark the label argument, if any. The macro does not have to
328 have a label argument - you could also use \\label{..} inside one of
329 its arguments.
330 Special names: `section' for section labels, `any' to define a group
331 which contains all labels.
332
333 This may also be a function to do local parsing and identify point
334 to be in a a non-standard label environment. The function must take
335 an argument BOUND and limit backward searches to this value. It
336 should return either nil or a cons cell (FUNCTION . POSITION) with
337 the function symbol and the position where the special environment
338 starts. See the Info documentation for an example.
339
340 Finally this may also be nil if the entry is only meant to change
341 some settings associated with the type indicator character (see below).
342
343 TYPE-KEY
344 Type indicator character, like `?t', must be a printable ASCII character.
345 The type indicator is a single character which defines a label type.
346 Any label inside the environment or macro is assumed to belong to this
347 type. The same character may occur several times in this list, to cover
348 cases in which different environments carry the same label type (like
349 `equation' and `eqnarray').
350 If the type indicator is nil and the macro has a label argument {*},
351 the macro defines neutral labels just like \label. In this case
352 the reminder of this entry is ignored.
353
354 LABEL-PREFIX
355 Label prefix string, like \"tab:\".
356 The prefix is a short string used as the start of a label. It may be the
357 empty string. The prefix may contain the following `%' escapes:
358 %f Current file name with directory and extension stripped.
359 %F Current file name relative to directory of master file.
360 %u User login name, on systems which support this.
361 %S A section prefix derived with variable `reftex-section-prefixes'.
362
363 Example: In a file `intro.tex', \"eq:%f:\" will become \"eq:intro:\").
364
365 REFERENCE-FORMAT
366 Format string for reference insert in buffer. `%s' will be replaced by
367 the label.
368 When the format starts with `~', the `~' will only be inserted if
369 there is not already a whitespace before point.
370
371 CONTEXT-METHOD
372 Indication on how to find the short context.
373 - If nil, use the text following the \\label{...} macro.
374 - If t, use
375 - the section heading for section labels.
376 - text following the \\begin{...} statement of environments.
377 (not a good choice for environments like eqnarray or enumerate,
378 where one has several labels in a single environment).
379 - text after the macro name (starting with the first arg) for macros.
380 - If an integer, use the nth argument of the macro. As a special case,
381 1000 means to get text after the last macro argument.
382 - If a string, use as regexp to search *backward* from the label. Context
383 is then the text following the end of the match. E.g. putting this to
384 \"\\\\\\\\caption[[{]\" will use the caption in a figure or table
385 environment.
386 \"\\\\\\\\begin{eqnarray}\\\\|\\\\\\\\\\\\\\\\\" works for eqnarrays.
387 - If any of `caption', `item', `eqnarray-like', `alignat-like', this
388 symbol will internally be translated into an appropriate regexp
389 (see also the variable `reftex-default-context-regexps').
390 - If a function, call this function with the name of the environment/macro
391 as argument. On call, point will be just after the \\label macro. The
392 function is expected to return a suitable context string. It should
393 throw an exception (error) when failing to find context.
394 As an example, here is a function returning the 10 chars following
395 the label macro as context:
396
397 (defun my-context-function (env-or-mac)
398 (if (> (point-max) (+ 10 (point)))
399 (buffer-substring (point) (+ 10 (point)))
400 (error \"Buffer too small\")))
401
402 Label context is used in two ways by RefTeX: For display in the label
403 menu, and to derive a label string. If you want to use a different
404 method for each of these, specify them as a dotted pair.
405 E.g. `(nil . t)' uses the text after the label (nil) for display, and
406 text from the default position (t) to derive a label string. This is
407 actually used for section labels.
408
409 MAGIC-WORDS
410 List of magic words which identify a reference to be of this type.
411 If the word before point is equal to one of these words when calling
412 `reftex-reference', the label list offered will be automatically
413 restricted to labels of the correct type.
414 If the first element of this wordlist is the symbol `regexp', the
415 strings are interpreted as regular expressions. RefTeX will add
416 a \"\\\\W\" to the beginning and other stuff to the end of the regexp.
417
418 TOC-LEVEL
419 The integer level at which this environment should be added to the
420 table of contents. See also `reftex-section-levels'. A positive
421 value will number the entries mixed with the sectioning commands of
422 the same level. A negative value will make unnumbered entries.
423 Useful only for theorem-like environments, will be ignored for macros.
424 When omitted or nil, no TOC entries will be made.
425
426 If the type indicator characters of two or more entries are the same, RefTeX
427 will use
428 - the first non-nil format and prefix
429 - the magic words of all involved entries.
430
431 Any list entry may also be a symbol. If that has an association in
432 `reftex-label-alist-builtin', the cddr of that association is spliced into the
433 list. However, builtin defaults should normally be set with the variable
434 `reftex-default-label-alist-entries."
435 :group 'reftex-defining-label-environments
436 :set 'reftex-set-dirty
437 :type
438 `(repeat
439 (choice :tag "Package or Detailed "
440 :value ("" ?a nil nil nil nil)
441 (list :tag "Detailed Entry"
442 :value ("" ?a nil nil nil nil)
443 (choice :tag "Environment or \\macro "
444 (const :tag "Ignore, just use typekey" nil)
445 (string "")
446 (symbol :tag "Special parser" my-parser))
447 (choice :tag "Type specification "
448 (const :tag "unspecified, like in \\label" nil)
449 (character :tag "Char " ?a))
450 (choice :tag "Label prefix string "
451 (const :tag "Default" nil)
452 (string :tag "String" "lab:"))
453 (choice :tag "Label reference format"
454 (const :tag "Default" nil)
455 (string :tag "String" "~\\ref{%s}"))
456 (choice :tag "Context method "
457 (const :tag "Default position" t)
458 (const :tag "After label" nil)
459 (number :tag "Macro arg nr" 1)
460 (regexp :tag "Regexp" "")
461 (const :tag "Caption in float" caption)
462 (const :tag "Item in list" item)
463 (const :tag "Eqnarray-like" eqnarray-like)
464 (const :tag "Alignat-like" alignat-like)
465 (symbol :tag "Function" my-func))
466 (repeat :tag "Magic words" :extra-offset 2 (string))
467 (option (choice :tag "Make TOC entry "
468 (const :tag "No entry" nil)
469 (integer :tag "Level" :value -3))))
470 (choice
471 :tag "Package"
472 :value AMSTeX
473 ,@(mapcar
474 (lambda (x)
475 (list 'const :tag (concat (symbol-name (nth 0 x)))
476 (nth 0 x)))
477 reftex-label-alist-builtin)))))
478
479 (defcustom reftex-max-section-depth 12
480 "Maximum depth of section levels in document structure.
481 Standard LaTeX needs default is 7, but there are packages for which this
482 needs to be larger."
483 :group 'reftex-defining-label-environments
484 :type 'integer)
485
486 ;; LaTeX section commands and level numbers
487 (defcustom reftex-section-levels
488 '(
489 ("part" . 0)
490 ("chapter" . 1)
491 ("section" . 2)
492 ("subsection" . 3)
493 ("subsubsection" . 4)
494 ("paragraph" . 5)
495 ("subparagraph" . 6)
496 ("subsubparagraph" . 7)
497 ("addchap" . -1) ; KOMA-Script
498 ("addsec" . -2) ; KOMA-Script
499 ;;; ("minisec" . -7) ; KOMA-Script
500 )
501 "Commands and levels used for defining sections in the document.
502 This is an alist with each element like (COMMAND-NAME . LEVEL).
503 The car of each cons cell is the name of the section macro (without
504 the backslash). The cdr is a number indicating its level. A negative
505 level means the same level as the positive value, but the section will
506 never get a number. The cdr may also be a function which will be called
507 to after the section-re matched to determine the level."
508 :group 'reftex-defining-label-environments
509 :set 'reftex-set-dirty
510 :type '(repeat
511 (cons (string :tag "sectioning macro" "")
512 (choice
513 (number :tag "level " 0)
514 (symbol :tag "function " my-level-func)))))
515
516 (defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:"))
517 "Prefixes for section labels.
518 When the label prefix given in an entry in `reftex-label-alist' contains `%S',
519 this list is used to determine the correct prefix string depending on the
520 current section level.
521 The list is an alist, with each entry of the form (KEY . PREFIX)
522 Possible keys are sectioning macro names like `chapter', section levels
523 (as given in `reftex-section-levels'), and t for the default."
524 :group 'reftex-defining-label-environments
525 :type '(repeat
526 (cons :value (0 . "")
527 (choice
528 (string :tag "macro name")
529 (integer :tag "section level")
530 (const :tag "default" t))
531 (string :tag "Prefix"))))
532
533 (defcustom reftex-default-context-regexps
534 '((caption . "\\\\\\(rot\\)?caption\\*?[[{]")
535 (item . "\\\\item\\(\\[[^]]*\\]\\)?")
536 (eqnarray-like . "\\\\begin{%s}\\|\\\\\\\\")
537 (alignat-like . "\\\\begin{%s}{[0-9]*}\\|\\\\\\\\"))
538 "Alist with default regular expressions for finding context.
539 The form (format regexp (regexp-quote environment)) is used to calculate
540 the final regular expression - so %s will be replaced with the environment
541 or macro."
542 :group 'reftex-defining-label-environments
543 :type '(repeat (cons (symbol) (regexp))))
544
545 (defcustom reftex-special-environment-functions nil
546 "List of functions to be called when trying to figure out current environment.
547 These are special functions to detect \"environments\" which do not
548 start with \\begin and end with \\end. Some LaTeX packages seem to
549 use such non-standard ways to set up environment-like constructs. The
550 purpose of each function in this list is to detect if point is
551 currently inside such a special \"environment\". If the environment
552 carries a label, you must also set up an entry for it in
553 `reftex-label-alist'.
554
555 The function should check if point is currently in the special
556 environment it was written to detect. If so, the function must return
557 a cons cell (NAME . POSITION). NAME is the name of the environment
558 detected and POSITION is the buffer position where the environment
559 starts. The function must return nil on failure to detect the
560 environment.
561
562 The function must take an argument BOUND. If non-nil, BOUND is a
563 boundary for backwards searches which should be observed.
564
565 Here is an example. The LaTeX package linguex.sty defines list macros
566 `\\ex.', `\\a.', etc for lists which are terminated by `\\z.' or an empty
567 line.
568
569 \\ex. \\label{ex:12} Some text in an exotic language ...
570 \\a. \\label{ex:13} more stuff
571 \\b. \\label{ex:14} still more stuff
572
573 ... more text after the empty line terminating all lists
574
575 And here is the setup for RefTeX:
576
577 1. Define a dummy environment for this in `reftex-label-alist'. Dummy means,
578 make up an environment name even though it is not used with \\begin and
579 \\end. Here we use \"linguex\" as this name.
580
581 (setq reftex-label-alist
582 '((\"linguex\" ?x \"ex:\" \"~\\\\ref{%s}\" nil (\"Example\" \"Ex.\"))))
583
584 2. Write a function to detect the list macros and the determinators as well.
585
586 (defun my-detect-linguex-list (bound)
587 (let ((pos (point)) p1)
588 (save-excursion
589 ;; Search for any of the linguex item macros at the beginning of a line
590 (if (re-search-backward
591 \"^[ \\t]*\\\\(\\\\\\\\\\\\(ex\\\\|a\\\\|b\\\\|c\\\\|d\\\\|e\\\\|f\\\\)g?\\\\.\\\\)\" bound t)
592 (progn
593 (setq p1 (match-beginning 1))
594 ;; Make sure no empty line or \\z. is between us and the item macro
595 (if (re-search-forward \"\\n[ \\t]*\\n\\\\|\\\\\\\\z\\\\.\" pos t)
596 ;; Return nil because list was already closed
597 nil
598 ;; OK, we got it
599 (cons \"linguex\" p1)))
600 ;; Return nil for not found
601 nil))))
602
603 3. Tell RefTeX to use this function
604
605 (setq reftex-special-environment-functions '(my-detect-linguex-list))
606 "
607 :group 'reftex-defining-label-environments
608 :type 'hook)
609
610 ;; Label insertion
611
612 (defgroup reftex-making-and-inserting-labels nil
613 "Options on how to create new labels."
614 :group 'reftex-label-support)
615
616 (defcustom reftex-insert-label-flags '("s" "sft")
617 "Flags governing label insertion. First flag DERIVE, second flag PROMPT.
618
619 If DERIVE is t, RefTeX will try to derive a sensible label from context.
620 A section label for example will be derived from the section heading.
621 The conversion of the context to a legal label is governed by the
622 specifications given in `reftex-derive-label-parameters'.
623 If RefTeX fails to derive a label, it will prompt the user.
624 If DERIVE is nil, the label generated will consist of the prefix and a
625 unique number, like `eq:23'.
626
627 If PROMPT is t, the user will be prompted for a label string. The prompt will
628 already contain the prefix, and (if DERIVE is t) a default label derived from
629 context. When PROMPT is nil, the default label will be inserted without
630 query.
631
632 So the combination of DERIVE and PROMPT controls label insertion. Here is a
633 table describing all four possibilities:
634
635 DERIVE PROMPT ACTION
636 -------------------------------------------------------------------------
637 nil nil Insert simple label, like eq:22 or sec:13. No query.
638 nil t Prompt for label.
639 t nil Derive a label from context and insert without query.
640 t t Derive a label from context and prompt for confirmation.
641
642 Each flag may be set to t, nil, or a string of label type letters
643 indicating the label types for which it should be true. The strings work
644 like character classes.
645 Thus, the combination may be set differently for each label type. The
646 default settings \"s\" and \"sft\" mean: Derive section labels from headings
647 (with confirmation). Prompt for figure and table labels. Use simple labels
648 without confirmation for everything else.
649 The available label types are: s (section), f (figure), t (table), i (item),
650 e (equation), n (footnote), N (endnote), plus any definitions in
651 `reftex-label-alist'."
652 :group 'reftex-making-and-inserting-labels
653 :type '(list (choice :tag "Derive label from context"
654 (const :tag "always" t)
655 (const :tag "never" nil)
656 (string :tag "selected label types" ""))
657 (choice :tag "Prompt for label string "
658 :entry-format " %b %v"
659 (const :tag "always" t)
660 (const :tag "never" nil)
661 (string :tag "selected label types" ""))))
662
663 (defcustom reftex-string-to-label-function 'reftex-string-to-label
664 "Function to turn an arbitrary string into a legal label.
665 RefTeX's default function uses the variable `reftex-derive-label-parameters'."
666 :group 'reftex-making-and-inserting-labels
667 :type 'symbol)
668
669 (defcustom reftex-translate-to-ascii-function 'reftex-latin1-to-ascii
670 "Filter function which will process a context string before it is used
671 to derive a label from it. The intended application is to convert ISO or
672 Mule characters into something legal in labels. The default function
673 removes the accents from Latin-1 characters. X-Symbol (>=2.6) sets this
674 variable to the much more general `x-symbol-translate-to-ascii'."
675 :group 'reftex-making-and-inserting-labels
676 :type 'symbol)
677
678 (defcustom reftex-derive-label-parameters '(3 20 t 1 "-"
679 ("the" "on" "in" "off" "a" "for" "by" "of" "and" "is" "to") t)
680 "Parameters for converting a string into a label.
681 This variable is a list of the following items.
682
683 NWORDS Number of words to use.
684 MAXCHAR Maximum number of characters in a label string.
685 ILLEGAL nil: Throw away any words containing characters illegal in labels.
686 t: Throw away only the illegal characters, not the whole word.
687 ABBREV nil: Never abbreviate words.
688 t: Always abbreviate words (see `reftex-abbrev-parameters').
689 not t and not nil: Abbreviate words if necessary to shorten
690 label string below MAXCHAR.
691 SEPARATOR String separating different words in the label.
692 IGNOREWORDS List of words which should not be part of labels.
693 DOWNCASE t: Downcase words before using them."
694 :group 'reftex-making-and-inserting-labels
695 :type '(list (integer :tag "Number of words " 3)
696 (integer :tag "Maximum label length " 20)
697 (choice :tag "Illegal characters in words"
698 (const :tag "throw away entire word" nil)
699 (const :tag "throw away single chars" t))
700 (choice :tag "Abbreviate words "
701 (const :tag "never" nil)
702 (const :tag "always" t)
703 (const :tag "when label is too long" 1))
704 (string :tag "Separator between words " "-")
705 (repeat :tag "Ignore words"
706 :entry-format " %i %d %v"
707 (string :tag ""))
708 (option (boolean :tag "Downcase words "))))
709
710 (defcustom reftex-label-illegal-re "[^-a-zA-Z0-9_+=:;,.]"
711 "Regexp matching characters not legal in labels."
712 :group 'reftex-making-and-inserting-labels
713 :type '(regexp :tag "Regular Expression"))
714
715 (defcustom reftex-abbrev-parameters '(4 2 "^aeiou" "aeiou")
716 "Parameters for abbreviation of words.
717 This variable is a list of the following items.
718
719 MIN-CHARS Minimum number of characters remaining after abbreviation.
720 MIN-KILL Minimum number of characters to remove when abbreviating words.
721 BEFORE Character class before abbrev point in word.
722 AFTER Character class after abbrev point in word."
723 :group 'reftex-making-and-inserting-labels
724 :type '(list
725 (integer :tag "Minimum chars per word" 4)
726 (integer :tag "Shorten by at least " 2)
727 (string :tag "cut before char class " "^saeiou")
728 (string :tag "cut after char class " "aeiou")))
729
730 (defcustom reftex-format-label-function nil
731 "Function which produces the string to insert as a label definition.
732 Normally should be nil, unless you want to do something fancy.
733 The function will be called with two arguments, the LABEL and the DEFAULT
734 FORMAT, which usually is `\label{%s}'. The function should return the
735 string to insert into the buffer."
736 :group 'reftex-making-and-inserting-labels
737 :type 'function)
738
739 ;; Label referencing
740
741 (defgroup reftex-referencing-labels nil
742 "Options on how to reference labels."
743 :group 'reftex-label-support)
744
745 (eval-and-compile
746 (defconst reftex-tmp
747 '((const :tag "on" t)
748 (const :tag "off" nil)
749 (string :tag "Selected label types"))))
750
751 (defcustom reftex-label-menu-flags '(t t nil nil nil nil t nil)
752 "List of flags governing the label menu makeup.
753 The flags are:
754
755 TABLE-OF-CONTENTS Show the labels embedded in a table of context.
756 SECTION-NUMBERS Include section numbers (like 4.1.3) in table of contents.
757 COUNTERS Show counters. This just numbers the labels in the menu.
758 NO-CONTEXT Non-nil means do NOT show the short context.
759 FOLLOW Follow full context in other window.
760 SHOW-COMMENTED Show labels from regions which are commented out.
761 MATCH-IN-TOC Obsolete flag.
762 SHOW FILES Show begin and end of included files.
763
764 Each of these flags can be set to t or nil, or to a string of type letters
765 indicating the label types for which it should be true. These strings work
766 like character classes in regular expressions. Thus, setting one of the
767 flags to \"sf\" makes the flag true for section and figure labels, nil
768 for everything else. Setting it to \"^sf\" makes it the other way round.
769 The available label types are: s (section), f (figure), t (table), i (item),
770 e (equation), n (footnote), plus any definitions in `reftex-label-alist'.
771
772 Most options can also be switched from the label menu itself - so if you
773 decide here to not have a table of contents in the label menu, you can still
774 get one interactively during selection from the label menu."
775 :group 'reftex-referencing-labels
776 :type
777 `(list
778 (choice :tag "Embed in table of contents " ,@reftex-tmp)
779 (choice :tag "Show section numbers " ,@reftex-tmp)
780 (choice :tag "Show individual counters " ,@reftex-tmp)
781 (choice :tag "Hide short context " ,@reftex-tmp)
782 (choice :tag "Follow context in other window " ,@reftex-tmp)
783 (choice :tag "Show commented labels " ,@reftex-tmp)
784 (choice :tag "Obsolete flag, Don't use. " ,@reftex-tmp)
785 (choice :tag "Show begin/end of included files" ,@reftex-tmp)))
786
787 (defcustom reftex-multiref-punctuation '((?, . ", ") (?- . "--") (?+ . " and "))
788 "Punctuation strings for multiple references.
789 When marking is used in the selection buffer to select several references,
790 this variable associates the 3 marking characters `,-+' with prefix strings
791 to be inserted into the buffer before the corresponding \ref macro.
792 This is used to string together whole reference sets, like
793 `eqs. 1,2,3-5,6 and 7' in a single call to `reftex-reference'. See manual."
794 :group 'reftex-referencing-labels
795 :type '(repeat (cons (character) (string))))
796
797 (defcustom reftex-vref-is-default nil
798 "*Non-nil means, the varioref macro \\vref is used as default.
799 In the selection buffer, the `v' key toggles the reference macro between
800 `\\ref' and `\\vref'. The value of this variable determines the default
801 which is active when entering the selection process.
802 Instead of nil or t, this may also be a string of type letters indicating
803 the label types for which it should be true."
804 :group 'reftex-referencing-labels
805 :type `(choice :tag "\\vref is default macro" ,@reftex-tmp))
806
807 (defcustom reftex-fref-is-default nil
808 "*Non-nil means, the fancyref macro \\fref is used as default.
809 In the selection buffer, the `V' key toggles the reference macro between
810 `\\ref', `\\fref' and `\\Fref'. The value of this variable determines
811 the default which is active when entering the selection process.
812 Instead of nil or t, this may also be a string of type letters indicating
813 the label types for which it should be true."
814 :group 'reftex-referencing-labels
815 :type `(choice :tag "\\fref is default macro" ,@reftex-tmp))
816
817 (defcustom reftex-level-indent 2
818 "*Number of spaces to be used for indentation per section level."
819 :group 'reftex-referencing-labels
820 :type 'integer)
821
822 (defcustom reftex-guess-label-type t
823 "*Non-nil means, `reftex-reference' will try to guess the label type.
824 To do that, RefTeX will look at the word before the cursor and compare it with
825 the words given in `reftex-label-alist'. When it finds a match, RefTeX will
826 immediately offer the correct label menu - otherwise it will prompt you for
827 a label type. If you set this variable to nil, RefTeX will always prompt."
828 :group 'reftex-referencing-labels
829 :type 'boolean)
830
831 (defcustom reftex-format-ref-function nil
832 "Function which produces the string to insert as a reference.
833 Normally should be nil, because the format to insert a reference can
834 already be specified in `reftex-label-alist'.
835 This hook also is used by the special commands to insert `\vref' and `\fref'
836 references, so even if you set this, your setting will be ignored by
837 the special commands.
838 The function will be called with two arguments, the LABEL and the DEFAULT
839 FORMAT, which normally is `~\ref{%s}'. The function should return the
840 string to insert into the buffer."
841 :group 'reftex-referencing-labels
842 :type 'function)
843
844 (defcustom reftex-select-label-mode-hook nil
845 "Mode hook for reftex-select-label-mode."
846 :group 'reftex-referencing-labels
847 :type 'hook)
848
849 ;; BibteX citation configuration ----------------------------------------
850
851 (defgroup reftex-citation-support nil
852 "Support for referencing bibliographic data with BibTeX."
853 :group 'reftex)
854
855 (defvar reftex-bibfile-ignore-list nil) ; compatibility
856 (defcustom reftex-bibfile-ignore-regexps nil
857 "*List of regular expressions to exclude files in \\bibliography{..}.
858 File names matched by these regexps will not be parsed by RefTeX.
859 Intended for files which contain only `@string' macro definitions and the
860 like, which are ignored by RefTeX anyway."
861 :group 'reftex-citation-support
862 :set 'reftex-set-dirty
863 :type '(repeat (regexp)))
864
865 (defcustom reftex-default-bibliography nil
866 "*List of BibTeX database files which should be used if none are specified.
867 When `reftex-citation' is called from a document which has neither a
868 `\bibliography{..}' statement nor a `thebibliography' environment,
869 RefTeX will scan these files instead. Intended for using `reftex-citation'
870 in non-LaTeX files. The files will be searched along the BIBINPUTS or TEXBIB
871 path."
872 :group 'reftex-citation-support
873 :type '(repeat (file)))
874
875 (defcustom reftex-sort-bibtex-matches 'reverse-year
876 "*Sorting of the entries found in BibTeX databases by reftex-citation.
877 Possible values:
878 nil Do not sort entries.
879 'author Sort entries by author name.
880 'year Sort entries by increasing year.
881 'reverse-year Sort entries by decreasing year."
882 :group 'reftex-citation-support
883 :type '(choice (const :tag "not" nil)
884 (const :tag "by author" author)
885 (const :tag "by year" year)
886 (const :tag "by year, reversed" reverse-year)))
887
888 (defcustom reftex-cite-format 'default
889 "*The format of citations to be inserted into the buffer.
890 It can be a string or an alist or a symbol. In the simplest case this
891 is just the string \"\\cite{%l}\", which is also the default. See the
892 definition of `reftex-cite-format-builtin' for more complex examples.
893
894 If `reftex-cite-format' is a string, it will be used as the format.
895 In the format, the following percent escapes will be expanded.
896
897 %l The BibTeX label of the citation.
898 %a List of author names, see also `reftex-cite-punctuation.
899 %2a Like %a, but abbreviate more than 2 authors like Jones et al.
900 %A First author name only.
901 %e Works like %a, but on list of editor names. (%2e and %E work a well)
902
903 It is also possible to access all other BibTeX database fields:
904 %b booktitle %c chapter %d edition %h howpublished
905 %i institution %j journal %k key %m month
906 %n number %o organization %p pages %P first page
907 %r address %s school %u publisher %t title
908 %v volume %y year
909 %B booktitle, abbreviated %T title, abbreviated
910
911 Usually, only %l is needed. The other stuff is mainly for the echo area
912 display, and for (setq reftex-comment-citations t).
913
914 %< as a special operator kills punctuation and space around it after the
915 string has been formatted.
916
917 Beware that all this only works with BibTeX database files. When
918 citations are made from the \\bibitems in an explicit thebibliography
919 environment, only %l is available.
920
921 If `reftex-cite-format' is an alist of characters and strings, the user
922 will be prompted for a character to select one of the possible format
923 strings.
924 In order to configure this variable, you can either set
925 `reftex-cite-format' directly yourself or set it to the SYMBOL of one of
926 the predefined styles. The predefined symbols are those which have an
927 association in the constant `reftex-cite-format-builtin'.
928 E.g.: (setq reftex-cite-format 'natbib)"
929 :group 'reftex-citation-support
930 :type
931 `(choice
932 :format "%{%t%}: \n%[Value Menu%] %v"
933 (radio :tag "Symbolic Builtins"
934 :indent 4
935 :value default
936 ,@(mapcar
937 (lambda (x)
938 (list 'const :tag (concat (symbol-name (nth 0 x))
939 ": " (nth 1 x))
940 (nth 0 x)))
941 reftex-cite-format-builtin))
942 (string :tag "format string" "\\cite{%l}")
943 (repeat :tag "key-ed format strings"
944 :value ((?\r . "\\cite{%l}")
945 (?t . "\\cite{%l}") (?p . "\\cite{%l}"))
946 (cons (character :tag "Key character" ?\r)
947 (string :tag "Format string" "")))))
948
949 (defcustom reftex-comment-citations nil
950 "*Non-nil means add a comment for each citation describing the full entry.
951 The comment is formatted according to `reftex-cite-comment-format'."
952 :group 'reftex-citation-support
953 :type 'boolean)
954
955 (defcustom reftex-cite-comment-format
956 "%% %2a %y, %j %v, %P, %b, %e, %u, %s %<\n"
957 "Citation format used for commented citations. Must NOT contain %l.
958 See the variable `reftex-cite-format' for possible percent escapes."
959 :group 'reftex-citation-support
960 :type 'string)
961
962 (defcustom reftex-cite-view-format "%2a %y, %T, %B, %j %v:%P, %s %<"
963 "Citation format used to display citation info in the message area.
964 Must NOT contain %l. See the variable `reftex-cite-format' for
965 possible percent escapes."
966 :group 'reftex-citation-support
967 :group 'reftex-viewing-cross-references
968 :type 'string)
969
970 (defcustom reftex-cite-punctuation '(", " " \\& " " {\\it et al.}")
971 "Punctuation for formatting of name lists in citations.
972 This is a list of 3 strings.
973 1. normal names separator, like \", \" in Jones, Brown and Miller
974 2. final names separator, like \" and \" in Jones, Brown and Miller
975 3. The \"et al\" string, like \" {\\it et al.}\" in Jones {\\it et al.}"
976 :group 'reftex-citation-support
977 :type '(list
978 (string :tag "Separator for names ")
979 (string :tag "Separator for last name in list")
980 (string :tag "string used as et al. ")))
981
982 (defcustom reftex-format-cite-function nil
983 "Function which produces the string to insert as a citation.
984 Normally should be nil, because the format to insert a reference can
985 already be specified in `reftex-cite-format'.
986 The function will be called with two arguments, the CITATION KEY and the
987 DEFAULT FORMAT, which is taken from `reftex-cite-format'. The function
988 should return the string to insert into the buffer."
989 :group 'reftex-citation-support
990 :type 'function)
991
992 (defcustom reftex-select-bib-mode-hook nil
993 "Mode hook for reftex-select-bib-mode."
994 :group 'reftex-citation-support
995 :type 'hook)
996
997 ;; Index Support Configuration
998
999 (defgroup reftex-index-support nil
1000 "Support for viewing and editing the index."
1001 :group 'reftex)
1002
1003 (defcustom reftex-support-index t
1004 "*Non-nil means, index entries are parsed as well.
1005 Index support is resource intensive and the internal structure holding the
1006 parsed information can become quite big. Therefore it can be turned off.
1007 When this is nil and you execute a command which requires index support,
1008 you will be asked for confirmation to turn it on and rescan the document."
1009 :group 'reftex-index-support
1010 :type 'boolean)
1011
1012 (defcustom reftex-index-special-chars '("!" "|" "@" "\"" "\\")
1013 "Special characters in index entries. The value is a list of five strings.
1014 These correspond to the makeindex keywords LEVEL ENCAP ACTUAL QUOTE ESCAPE."
1015 :group 'reftex-index-support
1016 :type '(list
1017 (string :tag "LEVEL separator")
1018 (string :tag "ENCAP char ")
1019 (string :tag "ACTUAL char ")
1020 (string :tag "QUOTE char ")
1021 (string :tag "ESCAPE char ")))
1022
1023 (defcustom reftex-index-macros nil
1024 "Macros which define index entries. The structure is
1025
1026 (MACRO INDEX-TAG KEY PREFIX EXCLUDE REPEAT)
1027
1028 MACRO is the macro. Arguments should be denoted by empty braces like
1029 \\index[]{*}. Use square brackets to denote optional arguments. The star
1030 marks where the index key is.
1031
1032 INDEX-TAG is a short name of the index. \"idx\" and \"glo\" are
1033 reserved for the default index and the glossary. Other indices can be
1034 defined as well. If this is an integer, the Nth argument of the macro
1035 holds the index tag.
1036
1037 KEY is a character which is used to identify the macro for input with
1038 \\[reftex-index]. ?i, ?I, and ?g are reserved for default index and glossary.
1039
1040 PREFIX can be a prefix which is added to the KEY part of the index entry.
1041 If you have a macro \\newcommand{\\molec}[1]{#1\\index{Molecules!#1}}, this
1042 prefix should be \"Molecules!\". See the manual for details.
1043
1044 EXCLUDE can be a function. If this function exists and returns a non-nil
1045 value, the index entry at point is ignored. This was implemented to support
1046 the (deprecated) `^' and `_' shortcuts in the LaTeX2e `index' package.
1047
1048 REPEAT, if non-nil, means the index macro does not typeset the entry in
1049 the text, so that the text has to be repeated outside the index macro.
1050 Needed for `reftex-index-selection-or-word' and for indexing from the
1051 phrase buffer.
1052
1053 The final entry may also be a symbol if this entry has a association
1054 in the variable `reftex-index-macros-builtin' to specify the main
1055 indexing package you are using. Legal values are currently
1056 default The LaTeX default - unnecessary to specify this one
1057 multind The multind.sty package
1058 index The index.sty package
1059 index-shortcut The index.sty packages with the ^ and _ shortcuts.
1060 Should not be used - only for old documents.
1061 Note that AUCTeX sets these things internally for RefTeX as well, so
1062 with a sufficiently new version of AUCTeX, you should not set the
1063 package here."
1064 :group 'reftex-index-support
1065 :set 'reftex-set-dirty
1066 :type `(list
1067 (repeat
1068 :inline t
1069 (list :value ("" "idx" ?a "" nil)
1070 (string :tag "Macro with args")
1071 (choice :tag "Index Tag "
1072 (string)
1073 (integer :tag "Macro arg Nr" :value 1))
1074 (character :tag "Access Key ")
1075 (string :tag "Key Prefix ")
1076 (symbol :tag "Exclusion hook ")
1077 (boolean :tag "Repeat Outside ")))
1078 (option
1079 :tag "Package:"
1080 (choice :tag "Package"
1081 :value index
1082 ,@(mapcar
1083 (lambda (x)
1084 (list 'const :tag (concat (symbol-name (nth 0 x))
1085 ": " (nth 1 x))
1086 (nth 0 x)))
1087 reftex-index-macros-builtin)))))
1088
1089 (defcustom reftex-index-default-macro '(?i "idx")
1090 "The default index macro for \\[reftex-index-selection-or-word].
1091 This is a list with (MACRO-KEY DEFAULT-TAG).
1092
1093 MACRO-KEY: Character identifying an index macro - see `reftex-index-macros'.
1094 DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
1095 When this is nil and a TAG is needed, RefTeX will ask for it.
1096 When this is the empty string and the TAG argument of the index
1097 macro is optional, the TAG argument will be omitted."
1098 :group 'reftex-index-support
1099 :type '(list
1100 (character :tag "Character identifying default macro")
1101 (choice :tag "Default index tag "
1102 (const nil)
1103 (string))))
1104
1105 (defcustom reftex-index-default-tag "idx"
1106 "Default index tag.
1107 When working with multiple indexes, RefTeX queries for an index tag when
1108 creating index entries or displaying a specific index. This variable controls
1109 the default offered for these queries. The default can be selected with RET
1110 during selection or completion. Legal values of this variable are:
1111
1112 nil Do not provide a default index
1113 \"tag\" The default index tag given as a string, e.g. \"idx\".
1114 last The last used index tag will be offered as default."
1115 :group 'reftex-index-support
1116 :type '(choice
1117 (const :tag "no default" nil)
1118 (const :tag "last used " 'last)
1119 (string :tag "index tag " "idx")))
1120
1121 (defcustom reftex-index-math-format "$%s$"
1122 "Format of index entries when copied from inside math mode.
1123 When `reftex-index-selection-or-word' is executed inside TeX math mode,
1124 the index key copied from the buffer is processed with this format string
1125 through the `format' function. This can be used to add the math delimiters
1126 (e.g. `$') to the string.
1127 Requires the `texmathp.el' library which is part of AUCTeX."
1128 :group 'reftex-index-support
1129 :type 'string)
1130
1131 (defcustom reftex-index-phrase-file-extension ".rip"
1132 "File extension for the index phrase file.
1133 This extension will be added to the base name of the master file."
1134 :group 'reftex-index-support
1135 :type 'string)
1136
1137 (defcustom reftex-index-phrases-logical-and-regexp " *&& *"
1138 "Regexp matching the `and' operator for index arguments in phrases file.
1139 When several index arguments in a phrase line are separated by this
1140 operator, each part will generate an index macro. So each match of
1141 the search phrase will produce *several* different index entries.
1142
1143 Note: make sure this does no match things which are not separators.
1144 This logical `and' has higher priority than the logical `or' specified in
1145 `reftex-index-phrases-logical-or-regexp'."
1146 :group 'reftex-index-support
1147 :type 'regexp)
1148
1149 (defcustom reftex-index-phrases-logical-or-regexp " *|| *"
1150 "Regexp matching the `or' operator for index arguments in phrases file.
1151 When several index arguments in a phrase line are separated by this
1152 operator, the user will be asked to select one of them at each match
1153 of the search phrase. The first index arg will be the default - a
1154 number key 1-9 must be pressed to switch to another.
1155
1156 Note: make sure this does no match things which are not separators.
1157 The logical `and' specified in `reftex-index-phrases-logical-or-regexp'
1158 has higher priority than this logical `or'."
1159 :group 'reftex-index-support
1160 :type 'regexp)
1161
1162 (defcustom reftex-index-phrases-search-whole-words t
1163 "*Non-nil means phrases search will look for whole words, not subwords.
1164 This works by requiring word boundaries at the beginning and end of
1165 the search string. When the search phrase already has a non-word-char
1166 at one of these points, no word boundary is required there."
1167 :group 'reftex-index-support
1168 :type 'boolean)
1169
1170 (defcustom reftex-index-phrases-case-fold-search t
1171 "*Non-nil means, searching for index phrases will ignore case."
1172 :group 'reftex-index-support
1173 :type 'boolean)
1174
1175 (defcustom reftex-index-phrases-skip-indexed-matches nil
1176 "*Non-nil means, skip matches which appear to be indexed already.
1177 When doing global indexing from the phrases buffer, searches for some
1178 phrases may match at places where that phrase was already indexed. In
1179 particular when indexing an already processed document again, this
1180 will even be the norm. When this variable is non-nil, RefTeX checks if
1181 the match is an index macro argument, or if an index macro is directly
1182 before or after the phrase. If that is the case, that match will
1183 be ignored."
1184 :group 'reftex-index-support
1185 :type 'boolean)
1186
1187 (defcustom reftex-index-phrases-wrap-long-lines nil
1188 "*Non-nil means, when indexing from the phrases buffer, wrap lines.
1189 Inserting indexing commands in a line makes the line longer - often
1190 so long that it does not fit onto the screen. When this variable is
1191 non-nil, newlines will be added as necessary before and/or after the
1192 indexing command to keep lines short. However, the matched text
1193 phrase and its index command will always end up on a single line.")
1194
1195 (defcustom reftex-index-phrases-sort-prefers-entry nil
1196 "*Non-nil means when sorting phrase lines, the explicit index entry is used.
1197 Phrase lines in the phrases buffer contain a search phrase, and
1198 sorting is normally based on these. Some phrase lines also have
1199 an explicit index argument specified. When this variable is non-nil,
1200 the index argument will be used for sorting."
1201 :group 'reftex-index-support
1202 :type 'boolean)
1203
1204 (defcustom reftex-index-phrases-sort-in-blocks t
1205 "*Non-nil means, empty and comment lines separate phrase buffer into blocks.
1206 Sorting will then preserve blocks, so that lines are re-arranged only
1207 within blocks."
1208 :group 'reftex-index-support
1209 :type 'boolean)
1210
1211 (defcustom reftex-index-section-letters "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1212 "The letters which denote sections in the index.
1213 Usually these are all capital letters. Don't use any downcase letters.
1214 Order is not significant, the index will be sorted by whatever the sort
1215 function thinks is correct.
1216 In addition to these letters, RefTeX will create a group `!' which
1217 contains all entries sorted below the lowest specified letter.
1218 In the index buffer, pressing any of these capital letters or `!' will jump
1219 to that section."
1220 :group 'reftex-index-support
1221 :type '(string :tag "Capital letters"))
1222
1223 (defcustom reftex-index-include-context nil
1224 "*Non-nil means, display the index definition context in the index buffer.
1225 This flag may also be toggled from the index buffer with the `c' key."
1226 :group 'reftex-index-support
1227 :type 'boolean)
1228
1229 (defcustom reftex-index-follow-mode nil
1230 "*Non-nil means, point in *Index* buffer will cause other window to follow.
1231 The other window will show the corresponding part of the document.
1232 This flag can be toggled from within the *Index* buffer with the `f' key."
1233 :group 'reftex-table-of-contents-browser
1234 :type 'boolean)
1235
1236 ;; Viewing Cross References
1237
1238 (defgroup reftex-viewing-cross-references nil
1239 "Displaying cross references and citations."
1240 :group 'reftex)
1241
1242 (defcustom reftex-view-crossref-extra nil
1243 "Macros which can be used for the display of cross references.
1244 This is used when `reftex-view-crossref' is called with point in an
1245 argument of a macro. Note that crossref viewing for citations,
1246 references (both ways) and index entries is hard-coded. This variable
1247 is only to configure additional structures for which crossreference
1248 viewing can be useful. Each entry has the structure
1249
1250 (MACRO-RE SEARCH-RE HIGHLIGHT).
1251
1252 MACRO-RE is matched against the macro. SEARCH-RE is the regexp used
1253 to search for cross references. `%s' in this regexp is replaced with
1254 with the macro argument at point. HIGHLIGHT is an integer indicating
1255 which subgroup of the match should be highlighted."
1256 :group 'reftex-viewing-cross-references
1257 :type '(repeat (group (regexp :tag "Macro Regexp ")
1258 (string :tag "Search Regexp ")
1259 (integer :tag "Highlight Group"))))
1260
1261 (defcustom reftex-auto-view-crossref t
1262 "*Non-nil means, initially turn automatic viewing of crossref info on.
1263 Automatic viewing of crossref info normally uses the echo area.
1264 Whenever point is on the argument of a \\ref or \\cite macro, and no
1265 other message is being displayed, the echo area will display
1266 information about that cross reference. You can also set the variable
1267 to the symbol `window'. In this case a small temporary window is
1268 used for the display.
1269 This feature can be turned on and of from the menu
1270 (Ref->Options)."
1271 :group 'reftex-viewing-cross-references
1272 :type '(choice (const :tag "off" nil)
1273 (const :tag "in Echo Area" t)
1274 (const :tag "in Other Window" window)))
1275
1276 (defcustom reftex-idle-time 1.2
1277 "*Time (secs) Emacs has to be idle before automatic crossref display is done."
1278 :group 'reftex-viewing-cross-references
1279 :type 'number)
1280
1281 (defcustom reftex-revisit-to-echo nil
1282 "*Non-nil means, automatic citation display will revisit files if necessary.
1283 When nil, citation display in echo area will only be active for cached
1284 entries and for BibTeX database files with live associated buffers."
1285 :group 'reftex-viewing-cross-references
1286 :type 'boolean)
1287
1288 (defcustom reftex-cache-cite-echo t
1289 "*Non-nil means, the information displayed in the echo area for cite macros
1290 is cached and even saved along with the parsing information. The cache
1291 survives document scans. In order to clear it, use M-x reftex-reset-mode."
1292 :group 'reftex-viewing-cross-references
1293 :type 'boolean)
1294
1295 (defcustom reftex-display-copied-context-hook nil
1296 "Normal Hook which is run before context is displayed anywhere. Designed
1297 for X-Symbol, but may have other uses as well."
1298 :group 'reftex-viewing-cross-references
1299 :group 'reftex-referencing-labels
1300 :type 'hook)
1301
1302 ;; Finding Files --------------------------------------------------------
1303
1304 (defgroup reftex-finding-files nil
1305 "Finding files on search paths."
1306 :group 'reftex)
1307
1308 (defcustom reftex-texpath-environment-variables '("TEXINPUTS")
1309 "*List of specifications how to retrieve the search path for TeX files.
1310 Several entries are possible.
1311 - If an element is the name of an environment variable, its content is used.
1312 - If an element starts with an exclamation mark, it is used as a command
1313 to retrieve the path. A typical command with the kpathsearch library would
1314 be `!kpsewhich -show-path=.tex'.
1315 - Otherwise the element itself is interpreted as a path.
1316 Multiple directories can be separated by the system dependent `path-separator'.
1317 Directories ending in `//' or `!!' will be expanded recursively.
1318 See also `reftex-use-external-file-finders'."
1319 :group 'reftex-finding-files
1320 :set 'reftex-set-dirty
1321 :type '(repeat (string :tag "Specification")))
1322
1323 (defcustom reftex-bibpath-environment-variables '("BIBINPUTS" "TEXBIB")
1324 "*List of specifications how to retrieve search path for .bib database files.
1325 Several entries are possible.
1326 - If an element is the name of an environment variable, its content is used.
1327 - If an element starts with an exclamation mark, it is used as a command
1328 to retrieve the path. A typical command with the kpathsearch library would
1329 be `!kpsewhich -show-path=.bib'.
1330 - Otherwise the element itself is interpreted as a path.
1331 Multiple directories can be separated by the system dependent `path-separator'.
1332 Directories ending in `//' or `!!' will be expanded recursively.
1333 See also `reftex-use-external-file-finders'."
1334 :group 'reftex-citation-support
1335 :group 'reftex-finding-files
1336 :set 'reftex-set-dirty
1337 :type '(repeat (string :tag "Specification")))
1338
1339 (defcustom reftex-file-extensions '(("tex" . (".tex" ".ltx"))
1340 ("bib" . (".bib")))
1341 "*Association list with file extensions for different file types.
1342 This is a list of items, each item is like: (TYPE . (DEF-EXT OTHER-EXT ...))
1343
1344 TYPE: File type like \"bib\" or \"tex\".
1345 DEF-EXT: The default extension for that file type, like \".tex\" or \".bib\".
1346 OTHER-EXT: Any number of other legal extensions for this file type.
1347
1348 When a files is searched and it does not have any of the legal extensions,
1349 we try the default extension first, and then the naked file name."
1350 :group 'reftex-finding-files
1351 :type '(repeat (cons (string :tag "File type")
1352 (repeat (string :tag "Extension")))))
1353
1354 (defcustom reftex-search-unrecursed-path-first t
1355 "*Non-nil means, search all specified directories before trying recursion.
1356 Thus, in a path \".//:/tex/\", search first \"./\", then \"/tex/\" and then
1357 all subdirectories of \"./\". If this option is nil, the subdirectories of
1358 \"./\" are searched before \"/tex/\". This is mainly for speed - most of the
1359 time the recursive path is for the system files and not for the user files.
1360 Set this to nil if the default makes RefTeX finding files with equal names
1361 in wrong sequence."
1362 :group 'reftex-finding-files
1363 :type 'boolean)
1364
1365 (defcustom reftex-use-external-file-finders nil
1366 "*Non-nil means, use external programs to find files.
1367 Normally, RefTeX searches the paths given in the environment variables
1368 TEXINPUTS and BIBINPUTS to find TeX files and BibTeX database files.
1369 With this option turned on, it calls an external program specified in the
1370 option `reftex-external-file-finders' instead. As a side effect,
1371 the variables `reftex-texpath-environment-variables' and
1372 `reftex-bibpath-environment-variables' will be ignored."
1373 :group 'reftex-finding-files
1374 :type 'boolean)
1375
1376 (defcustom reftex-external-file-finders '(("tex" . "kpsewhich -format=.tex %f")
1377 ("bib" . "kpsewhich -format=.bib %f"))
1378 "*Association list with external programs to call for finding files.
1379 Each entry is a cons cell (TYPE . PROGRAM).
1380 TYPE is either \"tex\" or \"bib\". PROGRAM is the external program to use with
1381 any arguments. %f will be replaced by the name of the file to be found.
1382 Note that these commands will be executed directly, not via a shell.
1383 Only relevant when `reftex-use-external-file-finders' is non-nil."
1384 :group 'reftex-finding-files
1385 :type '(repeat (cons (string :tag "File type")
1386 (string :tag "Program "))))
1387
1388 ;; Tuning the parser ----------------------------------------------------
1389
1390 (defgroup reftex-optimizations-for-large-documents nil
1391 "Configuration of parser speed and memory usage."
1392 :group 'reftex)
1393
1394 (defcustom reftex-keep-temporary-buffers 1
1395 "*Non-nil means, keep buffers created for parsing and lookup.
1396 RefTeX sometimes needs to visit files related to the current document.
1397 We distinguish files visited for
1398 PARSING: Parts of a multifile document loaded when (re)-parsing the document.
1399 LOOKUP: BibTeX database files and TeX files loaded to find a reference,
1400 to display label context, etc.
1401 The created buffers can be kept for later use, or be thrown away immediately
1402 after use, depending on the value of this variable:
1403
1404 nil Throw away as much as possible.
1405 t Keep everything.
1406 1 Throw away buffers created for parsing, but keep the ones created
1407 for lookup.
1408
1409 If a buffer is to be kept, the file is visited normally (which is potentially
1410 slow but will happen only once).
1411 If a buffer is to be thrown away, the initialization of the buffer depends
1412 upon the variable `reftex-initialize-temporary-buffers'."
1413 :group 'reftex-optimizations-for-large-documents
1414 :type '(choice
1415 (const :tag "Throw away everything" nil)
1416 (const :tag "Keep everything" t)
1417 (const :tag "Keep lookup buffers only" 1)))
1418
1419 (defcustom reftex-initialize-temporary-buffers nil
1420 "*Non-nil means do initializations even when visiting file temporarily.
1421 When nil, RefTeX may turn off find-file hooks and other stuff to briefly
1422 visit a file.
1423 When t, the full default initializations are done (find-file-hook etc.).
1424 Instead of t or nil, this variable may also be a list of hook functions to
1425 do a minimal initialization."
1426 :group 'reftex-optimizations-for-large-documents
1427 :type '(choice
1428 (const :tag "Read files literally" nil)
1429 (const :tag "Fully initialize buffers" t)
1430 (repeat :tag "Hook functions" :value (nil)
1431 (function-item))))
1432
1433 (defcustom reftex-no-include-regexps '("\\.pstex_t\\'")
1434 "*List of regular expressions to exclude certain input files from parsing.
1435 If the name of a file included via \\include or \\input is matched by any
1436 of the regular expressions in this list, that file is not parsed by RefTeX."
1437 :group 'reftex-optimizations-for-large-documents
1438 :type '(repeat (regexp)))
1439
1440 (defcustom reftex-enable-partial-scans nil
1441 "*Non-nil means, re-parse only 1 file when asked to re-parse.
1442 Re-parsing is normally requested with a `C-u' prefix to many RefTeX commands,
1443 or with the `r' key in menus. When this option is t in a multifile document,
1444 we will only parse the current buffer, or the file associated with the label
1445 or section heading near point in a menu. Requesting re-parsing of an entire
1446 multifile document then requires a `C-u C-u' prefix or the capital `R' key
1447 in menus."
1448 :group 'reftex-optimizations-for-large-documents
1449 :type 'boolean)
1450
1451 (defcustom reftex-allow-automatic-rescan t
1452 "*Non-nil means, RefTeX may rescan the document when this seems necessary.
1453 Currently this applies only to rescanning after label insertion, when
1454 the new label cannot be inserted correctly into the internal label
1455 list."
1456 :group 'reftex-optimizations-for-large-documents
1457 :type 'boolean)
1458
1459 (defcustom reftex-save-parse-info nil
1460 "*Non-nil means, save information gathered with parsing in a file.
1461 The file MASTER.rel in the same directory as MASTER.tex is used to save the
1462 information. When this variable is t,
1463 - accessing the parsing information for the first time in an editing session
1464 will read that file (if available) instead of parsing the document.
1465 - exiting Emacs or killing a buffer in reftex-mode will cause a new version
1466 of the file to be written."
1467 :group 'reftex-optimizations-for-large-documents
1468 :type 'boolean)
1469
1470 (defcustom reftex-parse-file-extension ".rel"
1471 "*File extension for the file in which parser information is stored.
1472 This extension is added to the base name of the master file."
1473 :group 'reftex-optimizations-for-large-documents
1474 :type 'string)
1475
1476 (defcustom reftex-use-multiple-selection-buffers nil
1477 "*Non-nil means use a separate selection buffer for each label type.
1478 These buffers are kept from one selection to the next and need not to be
1479 created for each use - so the menu generally comes up faster. The
1480 selection buffers will be erased (and therefore updated) automatically
1481 when new labels in its category are added. See the variable
1482 `reftex-auto-update-selection-buffers'."
1483 :group 'reftex-optimizations-for-large-documents
1484 :group 'reftex-referencing-labels
1485 :type 'boolean)
1486
1487 (defcustom reftex-auto-update-selection-buffers t
1488 "*Non-nil means, selection buffers will be updated automatically.
1489 When a new label is defined with `reftex-label', all selection buffers
1490 associated with that label category are emptied, in order to force an
1491 update upon next use. When nil, the buffers are left alone and have to be
1492 updated by hand, with the `g' key from the label selection process.
1493 The value of this variable will only have any effect when
1494 `reftex-use-multiple-selection-buffers' is non-nil."
1495 :group 'reftex-optimizations-for-large-documents
1496 :group 'reftex-referencing-labels
1497 :type 'boolean)
1498
1499 ;; Fontification and Faces ----------------------------------------------
1500
1501 (defgroup reftex-fontification-configurations nil
1502 "Options concerning the faces used in RefTeX."
1503 :group 'reftex)
1504
1505 (defcustom reftex-use-fonts t
1506 "*Non-nil means, use fonts in *toc* and selection buffers.
1507 Font-lock must be loaded as well to actually get fontified display.
1508 When changing this option, a rescan may be necessary to activate the change."
1509 :group 'reftex-fontification-configurations
1510 :type 'boolean)
1511
1512 (defcustom reftex-refontify-context 1
1513 "*Non-nil means, re-fontify the context in the label menu with font-lock.
1514 This slightly slows down the creation of the label menu. It is only necessary
1515 when you definitely want the context fontified.
1516
1517 This option may have 3 different values:
1518 nil Never refontify.
1519 t Always refontify.
1520 1 Refontify when absolutely necessary, e.g. when old versions of X-Symbol.
1521 The option is ignored when `reftex-use-fonts' is nil."
1522 :group 'reftex-fontification-configurations
1523 :group 'reftex-referencing-labels
1524 :type '(choice
1525 (const :tag "Never" nil)
1526 (const :tag "Always" t)
1527 (const :tag "When necessary" 1)))
1528
1529 (defcustom reftex-highlight-selection 'cursor
1530 "*Non-nil mean, highlight selected text in selection and *toc* buffers.
1531 Normally, the text near the cursor is the selected text, and it is
1532 highlighted. This is the entry most keys in the selction and *toc*
1533 buffers act on. However, if you mainly use the mouse to select an
1534 item, you may find it nice to have mouse-triggered highlighting
1535 instead or as well. The variable may have one of these values:
1536
1537 nil No highlighting.
1538 cursor Highlighting is cursor driven.
1539 mouse Highlighting is mouse driven.
1540 both Both cursor and mouse trigger highlighting.
1541
1542 Changing this variable requires to rebuild the selection and *toc* buffers
1543 to become effective (keys `g' or `r')."
1544 :group 'reftex-fontification-configurations
1545 :type '(choice
1546 (const :tag "Never" nil)
1547 (const :tag "Cursor driven" cursor)
1548 (const :tag "Mouse driven" mouse)
1549 (const :tag "Mouse and Cursor driven." both)))
1550
1551 (defcustom reftex-cursor-selected-face 'highlight
1552 "Face name to highlight cursor selected item in toc and selection buffers.
1553 See also the variable `reftex-highlight-selection'."
1554 :group 'reftex-fontification-configurations
1555 :type 'symbol)
1556 (defcustom reftex-mouse-selected-face 'secondary-selection
1557 "Face name to highlight mouse selected item in toc and selection buffers.
1558 See also the variable `reftex-highlight-selection'."
1559 :group 'reftex-fontification-configurations
1560 :type 'symbol)
1561 (defcustom reftex-file-boundary-face 'font-lock-comment-face
1562 "Face name for file boundaries in selection buffer."
1563 :group 'reftex-fontification-configurations
1564 :type 'symbol)
1565 (defcustom reftex-label-face 'font-lock-constant-face
1566 "Face name for labels in selection buffer."
1567 :group 'reftex-fontification-configurations
1568 :type 'symbol)
1569 (defcustom reftex-section-heading-face 'font-lock-function-name-face
1570 "Face name for section headings in toc and selection buffers."
1571 :group 'reftex-fontification-configurations
1572 :type 'symbol)
1573 (defcustom reftex-toc-header-face 'font-lock-comment-face
1574 "Face name for the header of a toc buffer."
1575 :group 'reftex-fontification-configurations
1576 :type 'symbol)
1577 (defcustom reftex-bib-author-face 'font-lock-keyword-face
1578 "Face name for author names in bib selection buffer."
1579 :group 'reftex-fontification-configurations
1580 :type 'symbol)
1581 (defcustom reftex-bib-year-face 'font-lock-comment-face
1582 "Face name for year in bib selection buffer."
1583 :group 'reftex-fontification-configurations
1584 :type 'symbol)
1585 (defcustom reftex-bib-title-face 'font-lock-function-name-face
1586 "Face name for article title in bib selection buffer."
1587 :group 'reftex-fontification-configurations
1588 :type 'symbol)
1589 (defcustom reftex-bib-extra-face 'font-lock-comment-face
1590 "Face name for bibliographic information in bib selection buffer."
1591 :group 'reftex-fontification-configurations
1592 :type 'symbol)
1593 (defcustom reftex-select-mark-face 'bold
1594 "Face name for marked entries in the selection buffers."
1595 :group 'reftex-fontification-configurations
1596 :type 'symbol)
1597 (defcustom reftex-index-header-face 'font-lock-comment-face
1598 "Face name for the header of an index buffer."
1599 :group 'reftex-fontification-configurations
1600 :type 'symbol)
1601 (defcustom reftex-index-section-face 'font-lock-function-name-face
1602 "Face name for the start of a new letter section in the index."
1603 :group 'reftex-fontification-configurations
1604 :type 'symbol)
1605 (defcustom reftex-index-tag-face 'font-lock-keyword-face
1606 "Face name for index names (for multiple indices)."
1607 :group 'reftex-fontification-configurations
1608 :type 'symbol)
1609 (defcustom reftex-index-face 'font-lock-constant-face
1610 "Face name for index entries."
1611 :group 'reftex-fontification-configurations
1612 :type 'symbol)
1613
1614 (defcustom reftex-pre-refontification-functions nil
1615 "X-Symbol specific hook.
1616 Functions get two arguments, the buffer from where the command started and a
1617 symbol indicating in what context the hook is called."
1618 :group 'reftex-fontification-configurations
1619 :type 'hook)
1620
1621 ;; Miscellaneous configurations -----------------------------------------
1622
1623 (defgroup reftex-miscellaneous-configurations nil
1624 "Collection of further configurations."
1625 :group 'reftex)
1626
1627 (defcustom reftex-extra-bindings nil
1628 "Non-nil means, make additional key bindings on startup.
1629 These extra bindings are located in the users `C-c letter' map."
1630 :group 'reftex-miscellaneous-configurations
1631 :type 'boolean)
1632
1633 (defcustom reftex-plug-into-AUCTeX nil
1634 "*Plug-in flags for AUCTeX interface.
1635 This variable is a list of 4 boolean flags. When a flag is non-nil,
1636 RefTeX will
1637
1638 - supply labels in new sections and environments (flag 1)
1639 - supply arguments for macros like `\\label'. (flag 2)
1640 - supply arguments for macros like `\\ref'. (flag 3)
1641 - supply arguments for macros like `\\cite'. (flag 4)
1642 - supply arguments for macros like `\\index'. (flag 5)
1643
1644 You may also set the variable itself to t or nil in order to turn all
1645 plug-ins on or off, respectively.
1646 \\<LaTeX-mode-map>Supplying labels in new sections and environments applies when creating
1647 sections with \\[LaTeX-section] and environments with \\[LaTeX-environment].
1648 Supplying macro arguments applies when you insert such a macro interactively
1649 with \\[TeX-insert-macro].
1650 See the AUCTeX documentation for more information.
1651 RefTeX uses `fset' to take over the function calls. Changing the variable
1652 may require a restart of Emacs in order to become effective."
1653 :group 'reftex-miscellaneous-configurations
1654 :group 'LaTeX
1655 :type '(choice
1656 (const :tag "No plug-ins" nil)
1657 (const :tag "All possible plug-ins" t)
1658 (list
1659 :tag "Individual choice"
1660 :value (t t t t t)
1661 (boolean :tag "supply label in new sections and environments")
1662 (boolean :tag "supply argument for macros like `\\label' ")
1663 (boolean :tag "supply argument for macros like `\\ref' ")
1664 (boolean :tag "supply argument for macros like `\\cite' ")
1665 (boolean :tag "supply argument for macros like `\\index' ")
1666 )))
1667
1668 (defcustom reftex-allow-detached-macro-args nil
1669 "*Non-nil means, allow arguments of macros to be detached by whitespace.
1670 When this is t, `aaa' will be considered as argument of \\bb in the following
1671 construct: \\bbb [xxx] {aaa}."
1672 :group 'reftex-miscellaneous-configurations
1673 :type 'boolean)
1674
1675
1676 (defcustom reftex-load-hook nil
1677 "Hook which is being run when loading reftex.el."
1678 :group 'reftex-miscellaneous-configurations
1679 :type 'hook)
1680
1681 (defcustom reftex-mode-hook nil
1682 "Hook which is being run when turning on RefTeX mode."
1683 :group 'reftex-miscellaneous-configurations
1684 :type 'hook)
1685
1686 ;;; reftex-vars.el ends here