(Search and Replace): Fix arg order for perform-replace.
[emacs.git] / man / reftex.texi
blobc2411322e3b4ff41808c07053b3ff444f1c2d558
1 \input texinfo  @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename ../info/reftex
4 @settitle RefTeX User Manual
5 @dircategory Emacs
6 @direntry
7 * RefTeX: (reftex).     Emacs support for LaTeX cross-references and citations.
8 @end direntry
9 @synindex ky cp
10 @syncodeindex vr cp
11 @syncodeindex fn cp
12 @set VERSION 4.19
13 @set EDITION 4.19
14 @set DATE August 2002
15 @c %**end of header
16 @finalout
18 @c Macro definitions
20 @c Subheadings inside a table.  Need a difference between info and the rest.
21 @macro tablesubheading{text}
22 @ifinfo
23 @subsubheading \text\
24 @end ifinfo
25 @ifnotinfo
26 @item @b{\text\}
27 @end ifnotinfo
28 @end macro
30 @ifinfo
31 This file documents @b{Ref@TeX{}}, a package to do labels, references,
32 citations and indices for LaTeX documents with Emacs.@refill
34 This is edition @value{EDITION} of the @b{Ref@TeX{}} User Manual for
35 @b{Ref@TeX{}} @value{VERSION}@refill
37 Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
39 Permission is granted to copy, distribute and/or modify this document
40 under the terms of the GNU Free Documentation License, Version 1.1 or
41 any later version published by the Free Software Foundation; with no
42 Invariant Sections, with the Front-Cover texts being ``A GNU
43 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
44 license is included in the section entitled ``GNU Free Documentation
45 License'' in the Emacs manual.
47 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
48 this GNU Manual, like GNU software.  Copies published by the Free
49 Software Foundation raise funds for GNU development.''
51 This document is part of a collection distributed under the GNU Free
52 Documentation License.  If you want to distribute this document
53 separately from the collection, you can do so by adding a copy of the
54 license to the document, as described in section 6 of the license.
55 @end ifinfo
57 @titlepage
58 @title Ref@TeX{} User Manual
59 @subtitle Support for LaTeX labels, references, citations and index entries with GNU Emacs
60 @subtitle Edition @value{EDITION}, @value{DATE}
62 @author by Carsten Dominik
63 @page
64 Copyright @copyright{} 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
66 @sp 2
67 This is edition @value{EDITION} of the @cite{Ref@TeX{} User Manual} for
68 @b{Ref@TeX{}} version @value{VERSION}, @value{DATE}.@refill
70 @sp 2
72 Permission is granted to copy, distribute and/or modify this document
73 under the terms of the GNU Free Documentation License, Version 1.1 or
74 any later version published by the Free Software Foundation; with no
75 Invariant Sections, with the Front-Cover texts being ``A GNU
76 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
77 license is included in the section entitled ``GNU Free Documentation
78 License'' in the Emacs manual.
80 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
81 this GNU Manual, like GNU software.  Copies published by the Free
82 Software Foundation raise funds for GNU development.''
84 This document is part of a collection distributed under the GNU Free
85 Documentation License.  If you want to distribute this document
86 separately from the collection, you can do so by adding a copy of the
87 license to the document, as described in section 6 of the license.
88 @end titlepage
89 @page
91 @ifnottex
92 @node Top,,,(dir)
94 @b{Ref@TeX{}} is a package for managing Labels, References,
95 Citations and index entries with GNU Emacs.@refill
97 Don't be discouraged by the size of this manual, which covers
98 @b{Ref@TeX{}} in great depth.  All you need to know to use
99 @b{Ref@TeX{}} can be summarized on two pages (@pxref{RefTeX in a
100 Nutshell}).  You can go back later to other parts of this document when
101 needed.@refill
103 @menu
104 * Introduction::                     Quick-Start information.
106 * Table of Contents::                A Tool to move around quickly.
107 * Labels and References::            Creating and referencing labels.
108 * Citations::                        Creating Citations.
109 * Index Support::                    Creating and Checking Index Entries.
110 * Viewing Cross-References::         Who references or cites what?
112 * RefTeXs Menu::                     The Ref menu in the menubar.
113 * Key Bindings::                      The default key bindings.
114 * Faces::                            Fontification of RefTeX's buffers.
115 * Multifile Documents::              Document spread over many files.
116 * Language Support::                 How to support other languages.
117 * Finding Files::                    Included TeX files and BibTeX .bib files.
118 * AUCTeX::                           Cooperation with AUCTeX.
119 * Optimizations::                    When RefTeX is too slow.
120 * Problems and Work-Arounds::        First Aid.
121 * Imprint::                          Author, Web-site, Thanks
123 * Commands::                         Which are the available commands.
124 * Options::                          How to extend and configure RefTeX.
125 * Keymaps and Hooks::                For customization.
126 * Changes::                          A List of recent changes to RefTeX.
128 The Index
130 * Index::                            The full index.
132 @detailmenu
134 Introduction
136 * Installation::                     How to install and activate RefTeX.
137 * RefTeX in a Nutshell::             A brief summary and quick guide.
139 Labels and References
141 * Creating Labels::
142 * Referencing Labels::
143 * Builtin Label Environments::       The environments RefTeX knows about.
144 * Defining Label Environments::        ... and environments it doesn't.
145 * Reference Info::                   View the label corresponding to a \ref.
146 * xr (LaTeX package)::               References to external documents.
147 * varioref (LaTeX package)::         How to create \vref instead of \ref.
148 * fancyref (LaTeX package)::         How to create \fref instead of \ref.
150 Defining Label Environments
152 * Theorem and Axiom::                Defined with @code{\newenvironment}.
153 * Quick Equation::                   When a macro sets the label type.
154 * Figure Wrapper::                   When a macro argument is a label.
155 * Adding Magic Words::               Other words for other languages.
156 * Using \eqref::                     How to switch to this AMS-LaTeX macro.
157 * Non-Standard Environments::        Environments without \begin and \end
158 * Putting it Together::              How to combine many entries.
160 Citations
162 * Creating Citations::               How to create them.
163 * Citation Styles::                  Natbib, Harvard, Chicago and Co.
164 * Citation Info::                    View the corresponding database entry.
165 * Chapterbib and Bibunits::          Multiple bibliographies in a Document.
166 * Citations Outside LaTeX::          How to make citations in Emails etc.
168 Index Support
170 * Creating Index Entries::           Macros and completion of entries.
171 * The Index Phrases File::           A special file for global indexing.
172 * Displaying and Editing the Index:: The index editor.
173 * Builtin Index Macros::             The index macros RefTeX knows about.
174 * Defining Index Macros::                ... and macros it  doesn't.
176 The Index Phrases File
178 * Collecting Phrases::               Collecting from document or external.
179 * Consistency Checks::               Check for duplicates etc.
180 * Global Indexing::                  The interactive indexing process.
182 AUCTeX
184 * AUCTeX-RefTeX Interface::          How both packages work together
185 * Style Files::                      AUCTeX's style files can support RefTeX
186 * Bib-Cite::                         Hypertext reading of a document
188 Options, Keymaps, Hooks
190 * Options (Table of Contents)::
191 * Options (Defining Label Environments)::
192 * Options (Creating Labels)::
193 * Options (Referencing Labels)::
194 * Options (Creating Citations)::
195 * Options (Index Support)::
196 * Options (Viewing Cross-References)::
197 * Options (Finding Files)::
198 * Options (Optimizations)::
199 * Options (Fontification)::
200 * Options (Misc)::
202 @end detailmenu
203 @end menu
205 @end ifnottex
207 @node Introduction, Table of Contents, , Top
208 @chapter Introduction
209 @cindex Introduction
211 @b{Ref@TeX{}} is a specialized package for support of labels,
212 references, citations, and the index in LaTeX.  @b{Ref@TeX{}} wraps
213 itself round 4 LaTeX macros: @code{\label}, @code{\ref}, @code{\cite},
214 and @code{\index}.  Using these macros usually requires looking up
215 different parts of the document and searching through BibTeX database
216 files.  @b{Ref@TeX{}} automates these time--consuming tasks almost
217 entirely.  It also provides functions to display the structure of a
218 document and to move around in this structure quickly.@refill
220 @iftex
221 Don't be discouraged by the size of this manual, which covers @b{Ref@TeX{}}
222 in great depth.  All you need to know to use @b{Ref@TeX{}} can be
223 summarized on two pages (@pxref{RefTeX in a Nutshell}).  You can go
224 back later to other parts of this document when needed.
225 @end iftex
227 @xref{Imprint}, for information about who to contact for help, bug
228 reports or suggestions.
230 @menu
231 * Installation::                     How to install and activate RefTeX.
232 * RefTeX in a Nutshell::             A brief summary and quick guide.
233 @end menu
235 @node Installation, RefTeX in a Nutshell, , Introduction
236 @section Installation
237 @cindex Installation
239 @b{Ref@TeX{}} is bundled and pre--installed with Emacs since version 20.2.
240 It was also bundled and pre--installed with XEmacs 19.16--20.x.  XEmacs
241 21.x users want to install the corresponding plug-in package which is
242 available from the
243 @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site}.  See
244 the XEmacs 21.x documentation on package installation for
245 details.@refill
247 Users of earlier Emacs distributions (including Emacs 19) can get a copy
248 of the @b{Ref@TeX{}} distribution from the maintainers web-page.
249 @xref{Imprint}, for more information.@refill
251 @section Environment
252 @cindex Finding files
253 @cindex BibTeX database files, not found
254 @cindex TeX files, not found
255 @cindex @code{TEXINPUTS}, environment variable
256 @cindex @code{BIBINPUTS}, environment variable
258 @b{Ref@TeX{}} needs to access all files which are part of a multifile
259 document, and the BibTeX database files requested by the
260 @code{\bibliography} command.  To find these files, @b{Ref@TeX{}} will
261 require a search path, i.e. a list of directories to check.  Normally
262 this list is stored in the environment variables @code{TEXINPUTS} and
263 @code{BIBINPUTS} which are also used by @b{Ref@TeX{}}.  However, on some
264 systems these variables do not contain the full search path.  If
265 @b{Ref@TeX{}} does not work for you because it cannot find some files,
266 read @ref{Finding Files}.
268 @section Entering @b{Ref@TeX{}} Mode
270 @findex turn-on-reftex
271 @findex reftex-mode
272 @vindex LaTeX-mode-hook
273 @vindex latex-mode-hook
274 To turn @b{Ref@TeX{}} Mode on and off in a particular buffer, use
275 @kbd{M-x reftex-mode}.  To turn on @b{Ref@TeX{}} Mode for all LaTeX
276 files, add the following lines to your @file{.emacs} file:@refill
278 @example
279 (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
280 (add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
281 @end example
283 @page
284 @node RefTeX in a Nutshell, , Installation, Introduction
285 @section @b{Ref@TeX{}} in a Nutshell
286 @cindex Quick-Start
287 @cindex Getting Started
288 @cindex RefTeX in a Nutshell
289 @cindex Nutshell, RefTeX in a
291 @enumerate
292 @item
293 @b{Table of Contents}@* Typing @kbd{C-c =} (@code{reftex-toc}) will show
294 a table of contents of the document.  This buffer can display sections,
295 labels and index entries defined in the document.  From the buffer, you
296 can jump quickly to every part of your document.  Press @kbd{?} to get
297 help.@refill
299 @item
300 @b{Labels and References}@* @b{Ref@TeX{}} helps to create unique labels
301 and to find the correct key for references quickly.  It distinguishes
302 labels for different environments, knows about all standard
303 environments (and many others), and can be configured to recognize any
304 additional labeled environments you have defined yourself (variable
305 @code{reftex-label-alist}).@refill
307 @itemize @bullet
308 @item
309 @b{Creating Labels}@* 
310 Type @kbd{C-c (} (@code{reftex-label}) to insert a label at point.
311 @b{Ref@TeX{}} will either
312 @itemize @minus
313 @item
314 derive a label from context (default for section labels)
315 @item
316 prompt for a label string (default for figures and tables) or
317 @item 
318 insert a simple label made of a prefix and a number (all other
319 environments)@refill
320 @end itemize
321 @noindent
322 Which labels are created how is configurable with the variable
323 @code{reftex-insert-label-flags}.@refill
325 @item
326 @b{Referencing Labels}@* To make a reference, type @kbd{C-c )}
327 (@code{reftex-reference}).  This shows an outline of the document with
328 all labels of a certain type (figure, equation,...) and some label
329 context.  Selecting a label inserts a @code{\ref@{@var{label}@}} macro
330 into the original buffer.@refill
331 @end itemize
333 @item
334 @b{Citations}@*
335 Typing @kbd{C-c [} (@code{reftex-citation}) will let you specify a
336 regular expression to search in current BibTeX database files (as
337 specified in the @code{\bibliography} command) and pull out a list of
338 matches for you to choose from.  The list is @emph{formatted} and
339 sorted.  The selected article is referenced as @samp{\cite@{@var{key}@}}
340 (see the variable @code{reftex-cite-format} if you want to insert
341 different macros).@refill
343 @item
344 @b{Index Support}@*
345 @b{Ref@TeX{}} helps to enter index entries.  It also compiles all
346 entries into an alphabetically sorted @file{*Index*} buffer which you
347 can use to check and edit the entries.  @b{Ref@TeX{}} knows about the
348 standard index macros and can be configured to recognize any additional
349 macros you have defined (@code{reftex-index-macros}).  Multiple indices
350 are supported.@refill
352 @itemize @bullet
353 @item
354 @b{Creating Index Entries}@*
355 To index the current selection or the word at point, type @kbd{C-c /}
356 (@code{reftex-index-selection-or-word}).  The default macro
357 @code{reftex-index-default-macro} will be used.  For a more complex entry
358 type @kbd{C-c <} (@code{reftex-index}), select any of the index macros
359 and enter the arguments with completion.@refill
361 @item
362 @b{The Index Phrases File (Delayed Indexing)}@*
363 Type @kbd{C-c \} (@code{reftex-index-phrase-selection-or-word}) to add
364 the current word or selection to a special @emph{index phrase file}.
365 @b{Ref@TeX{}} can later search the document for occurrences of these
366 phrases and let you interactively index the matches.@refill
368 @item
369 @b{Displaying and Editing the Index}@*
370 To display the compiled index in a special buffer, type @kbd{C-c >}
371 (@code{reftex-display-index}).  From that buffer you can check and edit
372 all entries.@refill
373 @end itemize
375 @page
376 @item @b{Viewing Cross-References}@*
377 When point is on the @var{key} argument of a cross--referencing macro
378 (@code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem},
379 @code{\index}, and variations) or inside a BibTeX database entry, you
380 can press @kbd{C-c &} (@code{reftex-view-crossref}) to display
381 corresponding locations in the document and associated BibTeX database
382 files.@refill @*
383 When the enclosing macro is @code{\cite} or @code{\ref} and no other
384 message occupies the echo area, information about the citation or label
385 will automatically be displayed in the echo area.@refill
387 @item
388 @b{Multifile Documents}@*
389 Multifile Documents are fully supported.  The included files must have a
390 file variable @code{TeX-master} or @code{tex-main-file} pointing to the
391 master file.  @b{Ref@TeX{}} provides cross-referencing information from
392 all parts of the document, and across document borders
393 (@file{xr.sty}).@refill
395 @item
396 @b{Document Parsing}@* @b{Ref@TeX{}} needs to parse the document in
397 order to find labels and other information.  It does it automatically
398 once and updates its list internally when @code{reftex-label} and
399 @code{reftex-index} are used.  To enforce reparsing, call any of the
400 commands described above with a raw @kbd{C-u} prefix, or press the
401 @kbd{r} key in the label selection buffer, the table of contents
402 buffer, or the index buffer.@refill
404 @item
405 @b{AUCTeX} @* If your major LaTeX mode is AUCTeX, @b{Ref@TeX{}} can
406 cooperate with it (see variable @code{reftex-plug-into-AUCTeX}).  AUCTeX
407 contains style files which trigger appropriate settings in
408 @b{Ref@TeX{}}, so that for many of the popular LaTeX packages no
409 additional customizations will be necessary.@refill
411 @item
412 @b{Useful Settings}@*
413 To integrate RefTeX with AUCTeX, use
414 @lisp
415 (setq reftex-plug-into-AUCTeX t)
416 @end lisp
418 To make your own LaTeX macro definitions known to @b{Ref@TeX{}},
419 customize the variables@refill
420 @example
421 @code{reftex-label-alist}          @r{(for label macros/environments)}
422 @code{reftex-section-levels}       @r{(for sectioning commands)}
423 @code{reftex-cite-format}          @r{(for @code{\cite}-like macros)}
424 @code{reftex-index-macros}         @r{(for @code{\index}-like macros)}
425 @code{reftex-index-default-macro}  @r{(to set the default macro)}
426 @end example
427 If you have a large number of macros defined, you may want to write
428 an AUCTeX style file to support them with both AUCTeX and
429 @b{Ref@TeX{}}.@refill
431 @item @b{Where Next?}@* Go ahead and use @b{Ref@TeX{}}.  Use its menus
432 until you have picked up the key bindings.  For an overview of what you
433 can do in each of the different special buffers, press @kbd{?}.  Read
434 the manual if you get stuck, of if you are curious what else might be
435 available.  The first part of the manual explains in
436 a tutorial way how to use and customize @b{Ref@TeX{}}.  The second
437 part is a command and variable reference.@refill  
438 @end enumerate
440 @node Table of Contents, Labels and References, Introduction, Top
441 @chapter Table of Contents
442 @cindex @file{*toc*} buffer
443 @cindex Table of contents buffer
444 @findex reftex-toc
445 @kindex C-c =
447 Pressing the keys @kbd{C-c =} pops up a buffer showing the table of
448 contents of the document.  By default, this @file{*toc*} buffer shows
449 only the sections of a document.  Using the @kbd{l} and @kbd{i} keys you
450 can display all labels and index entries defined in the document as
451 well.@refill
453 With the cursor in any of the lines denoting a location in the
454 document, simple key strokes will display the corresponding part in
455 another window, jump to that location, or perform other actions.@refill
457 @kindex ?
458 Here is a list of special commands in the @file{*toc*} buffer.  A
459 summary of this information is always available by pressing
460 @kbd{?}.@refill
462 @table @kbd
464 @tablesubheading{General}
465 @item ?
466 Display a summary of commands.
468 @item 0-9, -
469 Prefix argument.
471 @tablesubheading{Moving around}
472 @item n
473 Goto next entry in the table of context.
475 @item p
476 Goto previous entry in the table of context.
478 @item C-c C-n
479 Goto next section heading.  Useful when many labels and index entries
480 separate section headings.@refill
482 @item C-c C-p
483 Goto previous section heading.
485 @item N z
486 Jump to section N, using the prefix arg.  For example, @kbd{3 z} jumps
487 to section 3.@refill
489 @tablesubheading{Access to document locations}
490 @item @key{SPC}
491 Show the corresponding location in another window.  This command does
492 @emph{not} select that other window.@refill
494 @item @key{TAB}
495 Goto the location in another window.
497 @item @key{RET}
498 Go to the location and hide the @file{*toc*} buffer.  This will restore
499 the window configuration before @code{reftex-toc} (@kbd{C-c =}) was
500 called.@refill
502 @item mouse-2
503 @vindex reftex-highlight-selection
504 Clicking with mouse button 2 on a line has the same effect as @key{RET}.
505 See also variable @code{reftex-highlight-selection}, @ref{Options
506 (Fontification)}.@refill
508 @item f
509 @vindex reftex-toc-follow-mode
510 @vindex reftex-revisit-to-follow
511 Toggle follow mode.  When follow mode is active, the other window will
512 always show the location corresponding to the line at point in the
513 @file{*toc*} buffer.  This is similar to pressing @key{SPC} after each
514 cursor motion.  The default for this flag can be set with the variable
515 @code{reftex-toc-follow-mode}.  Note that only context in files already
516 visited is shown.  @b{Ref@TeX{}} will not visit a file just for follow
517 mode.  See, however, the variable
518 @code{reftex-revisit-to-follow}.@refill
520 @item .
521 Show calling point in another window.  This is the point from where
522 @code{reftex-toc} was last called.
524 @page
525 @tablesubheading{Exiting}
526 @item q
527 Hide the @file{*toc*} buffer, return to the position where
528 @code{reftex-toc} was last called.@refill
530 @item k
531 Kill the @file{*toc*} buffer, return to the position where
532 @code{reftex-toc} was last called.@refill
534 @item C-c >
535 Switch to the @file{*Index*} buffer of this document.  With prefix
536 @samp{2}, restrict the index to the section at point in the @file{*toc*} 
537 buffer.
539 @tablesubheading{Controlling what gets displayed}
541 @item t
542 @vindex reftex-toc-max-level
543 Change the maximum level of toc entries displayed in the @file{*toc*}
544 buffer.  Without prefix arg, all levels will be included.  With prefix
545 arg (e.g @kbd{3 t}), ignore all toc entries with level greater than
546 @var{arg} (3 in this case).  Chapters are level 1, sections are level 2.
547 The mode line @samp{T<>} indicator shows the current value.  The default
548 depth can be configured with the variable
549 @code{reftex-toc-max-level}.@refill
551 @item F
552 @vindex reftex-toc-include-file-boundaries
553 Toggle the display of the file borders of a multifile document in the
554 @file{*toc*} buffer.  The default for this flag can be set with the
555 variable @code{reftex-toc-include-file-boundaries}.@refill
557 @item l
558 @vindex reftex-toc-include-labels
559 Toggle the display of labels in the @file{*toc*} buffer.  The default
560 for this flag can be set with the variable
561 @code{reftex-toc-include-labels}.  When called with a prefix argument,
562 @b{Ref@TeX{}} will prompt for a label type and include only labels of
563 the selected type in the @file{*toc*} buffer.  The mode line @samp{L<>}
564 indicator shows which labels are included.@refill
566 @item i
567 @vindex reftex-toc-include-index-entries
568 Toggle the display of index entries in the @file{*toc*} buffer.  The
569 default for this flag can be set with the variable
570 @code{reftex-toc-include-index-entries}.  When called with a prefix
571 argument, @b{Ref@TeX{}} will prompt for a specific index and include
572 only entries in the selected index in the @file{*toc*} buffer.  The mode 
573 line @samp{I<>} indicator shows which index is used.@refill
575 @item c
576 @vindex reftex-toc-include-context
577 Toggle the display of label and index context in the @file{*toc*}
578 buffer.  The default for this flag can be set with the variable
579 @code{reftex-toc-include-context}.@refill
581 @tablesubheading{Updating the buffer}
583 @item g
584 Rebuild the @file{*toc*} buffer.  This does @emph{not} rescan the
585 document.@refill
587 @item r
588 @vindex reftex-enable-partial-scans
589 Reparse the LaTeX document and rebuild the @file{*toc*} buffer.  When
590 @code{reftex-enable-partial-scans} is non-nil, rescan only the file this
591 location is defined in, not the entire document.@refill
593 @item C-u r
594 Reparse the @emph{entire} LaTeX document and rebuild the @file{*toc*}
595 buffer.@refill
597 @item x
598 Switch to the @file{*toc*} buffer of an external document.  When the
599 current document is using the @code{xr} package (@pxref{xr (LaTeX
600 package)}), @b{Ref@TeX{}} will switch to one of the external
601 documents.@refill
603 @item a
604 Toggle the automatic recentering of the @file{*toc*} buffer.  When this
605 option is on, moving around in the document will cause the @file{*toc*}
606 to always highlight the current section.  This can be enabled by default
607 with the variable @code{reftex-auto-recenter-toc}.
609 @end table
611 @vindex reftex-toc-map
612 In order to define additional commands for the @file{*toc*} buffer, the
613 keymap @code{reftex-toc-map} may be used.@refill
615 @findex reftex-toc-recenter
616 @vindex reftex-auto-recenter-toc
617 @vindex reftex-idle-time
618 @cindex @file{*toc*} buffer, recentering
619 @cindex Table of contents buffer, recentering
620 @kindex C-c -
621 If you call @code{reftex-toc} while the @file{*toc*} buffer already
622 exists, the cursor will immediately jump to the right place, i.e. the
623 section from which @code{reftex-toc} was called will be highlighted.
624 The command @kbd{C-c -} (@code{reftex-toc-recenter}) will only redisplay
625 the @file{*toc*} buffer and highlight the correct line without actually
626 selecting the @file{*toc*} window.  This can be useful to quickly find
627 out where in the document you currently are.  If you want the TOC buffer
628 to show the current section automatically whenever you stop typing, try
629 @lisp
630 (setq reftex-auto-recenter-toc t)
631 @end lisp
632 When this is turned on, the toc buffer will be recentered whenever Emacs
633 is idle for more than @code{reftex-idle-time} seconds.
636 @cindex Sectioning commands
637 @cindex KOMA-Script, LaTeX classes
638 @cindex LaTeX classes, KOMA-Script
639 @cindex TOC entries for environments
640 @vindex reftex-section-levels
641 The section macros recognized by @b{Ref@TeX{}} are all LaTeX section
642 macros (from @code{\part} to @code{\subsubparagraph}) and the commands
643 @code{\addchap} and @code{\addsec} from the KOMA-Script classes.
644 Additional macros can be configured with the variable
645 @code{reftex-section-levels}.  It is also possible to add certain LaTeX
646 environments to the table of contents.  This is probably only useful for
647 theorem-like environments. @xref{Defining Label Environments}, for an
648 example.
650 @node Labels and References, Citations, Table of Contents, Top
651 @chapter Labels and References
652 @cindex Labels in LaTeX
653 @cindex References in LaTeX
654 @cindex Label category
655 @cindex Label environment
656 @cindex @code{\label}
658 LaTeX provides a powerful mechanism to deal with cross--references in a
659 document.  When writing a document, any part of it can be marked with a
660 label, like @samp{\label@{mark@}}.  LaTeX records the current value of a
661 certain counter when a label is defined.  Later references to this label
662 (like @samp{\ref@{mark@}}) will produce the recorded value of the
663 counter.@refill
665 Labels can be used to mark sections, figures, tables, equations,
666 footnotes, items in enumerate lists etc.  LaTeX is context sensitive in
667 doing this: A label defined in a figure environment automatically
668 records the figure counter, not the section counter.@refill
670 Several different environments can share a common counter and therefore
671 a common label category.  E.g.  labels in both @code{equation} and
672 @code{eqnarray} environments record the value of the same counter - the
673 equation counter.@refill
675 @menu
676 * Creating Labels::
677 * Referencing Labels::
678 * Builtin Label Environments::       The environments RefTeX knows about.
679 * Defining Label Environments::        ... and environments it doesn't.
680 * Reference Info::                   View the label corresponding to a \ref.
681 * xr (LaTeX package)::               References to external documents.
682 * varioref (LaTeX package)::         How to create \vref instead of \ref.
683 * fancyref (LaTeX package)::         How to create \fref instead of \ref.
684 @end menu
686 @node Creating Labels, Referencing Labels, , Labels and References
687 @section Creating Labels
688 @cindex Creating labels
689 @cindex Labels, creating
690 @cindex Labels, deriving from context
691 @kindex C-c (
692 @findex reftex-label
694 In order to create a label in a LaTeX document, press @kbd{C-c (}
695 (@code{reftex-label}).  Just like LaTeX, @b{Ref@TeX{}} is context sensitive
696 and will figure out the environment it currently is in and adapt the
697 label to that environment.  A label usually consists of a short prefix
698 indicating the type of the label and a unique mark.  @b{Ref@TeX{}} has
699 3 different modes to create this mark.@refill
701 @enumerate
702 @item
703 @vindex reftex-translate-to-ascii-function
704 @vindex reftex-derive-label-parameters
705 @vindex reftex-label-illegal-re
706 @vindex reftex-abbrev-parameters
707 A label can be derived from context.  This means, @b{Ref@TeX{}} takes
708 the context of the label definition and constructs a label from
709 that@footnote{Note that the context may contain constructs which are
710 illegal in labels.  @b{Ref@TeX{}} will therefore strip the accent from
711 accented Latin-1 characters and remove everything else which is not
712 legal in labels.  This mechanism is safe, but may not be satisfactory
713 for non-western languages.  Check the following variables if you need to
714 change things: @code{reftex-translate-to-ascii-function},
715 @code{reftex-derive-label-parameters}, @code{reftex-label-illegal-re},
716 @code{reftex-abbrev-parameters}.}.  This works best for section labels,
717 where the section heading is used to construct a label.  In fact,
718 @b{Ref@TeX{}}'s default settings use this method only for section
719 labels.  You will be asked to confirm the derived label, or edit
720 it.@refill
722 @item
723 We may also use a simple unique number to identify a label.  This is
724 mostly useful for labels where it is difficult to come up with a very
725 good descriptive name.  @b{Ref@TeX{}}'s default settings use this method
726 for equations, enumerate items and footnotes.  The author of @b{Ref@TeX{}}
727 tends to write documents with many equations and finds it impossible
728 to come up with good names for each of them.  These simple labels are
729 inserted without query, and are therefore very fast.  Good descriptive
730 names are not really necessary as @b{Ref@TeX{}} will provide context to
731 reference a label (@pxref{Referencing Labels}).@refill
733 @item
734 The third method is to ask the user for a label.  This is most
735 useful for things which are easy to describe briefly and do not turn up
736 too frequently in a document.  @b{Ref@TeX{}} uses this for figures and
737 tables.  Of course, one can enter the label directly by typing the full
738 @samp{\label@{mark@}}.  The advantage of using @code{reftex-label}
739 anyway is that @b{Ref@TeX{}} will know that a new label has been defined.
740 It will then not be necessary to rescan the document in order to access
741 this label later.@refill
742 @end enumerate
744 @vindex reftex-insert-label-flags
745 If you want to change the way certain labels are created, check out the
746 variable @code{reftex-insert-label-flags} (@pxref{Options (Creating
747 Labels)}).@refill
749 If you are using AUCTeX to write your LaTeX documents, you can
750 set it up to delegate the creation of labels to
751 @b{Ref@TeX{}}. @xref{AUCTeX}, for more information.
753 @node Referencing Labels, Builtin Label Environments, Creating Labels, Labels and References
754 @section Referencing Labels
755 @cindex Referencing labels
756 @cindex Labels, referencing
757 @cindex Selection buffer, labels
758 @cindex Selection process
759 @cindex @code{\ref}
760 @kindex C-c )
761 @findex reftex-reference
763 Referencing Labels is really at the heart of @b{Ref@TeX{}}.  Press @kbd{C-c
764 )} in order to reference a label (reftex-reference).  This will start a
765 selection process and finally insert the complete @samp{\ref@{label@}}
766 into the buffer.@refill
768 First, @b{Ref@TeX{}} will determine the label category which is required.
769 Often that can be figured out from context.  For example, if you
770 write @samp{As shown in eq.} and the press @kbd{C-c )}, @b{Ref@TeX{}} knows
771 that an equation label is going to be referenced.  If it cannot figure
772 out what label category is needed, it will query for one.@refill
774 You will then be presented with a label selection menu.  This is a
775 special buffer which contains an outline of the document along with all
776 labels of the given label category.  In addition, next to the label
777 there will be one line of context of the label definition, which is some
778 text in the buffer near the label definition.  Usually this is
779 sufficient to identify the label.  If you are unsure about a certain
780 label, pressing @key{SPC} will show the label definition point in
781 another window.@refill
783 In order to reference a label, move to cursor to the correct label and
784 press @key{RET}.  You can also reference several labels with a single
785 call to @code{reftex-reference} by marking entries with the @kbd{m}
786 key (see below).
788 @kindex ?
789 Here is a list of special commands in the selection buffer.  A summary
790 of this information is always available from the selection process by
791 pressing @kbd{?}.@refill
795 @table @kbd
796 @tablesubheading{General}
797 @item ?
798 Show a summary of available commands.
800 @item 0-9,-
801 Prefix argument.
803 @tablesubheading{Moving around}
804 @item n
805 Go to next label.
807 @item p
808 Go to previous label.
810 @item b
811 Jump back to the position where you last left the selection buffer.
812 Normally this should get you back to the last referenced label.@refill
814 @item C-c C-n
815 Goto next section heading.
817 @item C-c C-p
818 Goto previous section heading.
820 @item N z
821 Jump to section N, using the prefix arg.  For example @kbd{3 z} jumps to 
822 section 3.@refill
824 @tablesubheading{Displaying Context}
825 @item @key{SPC}
826 Show the surroundings of the definition of the current label in another
827 window.  See also the @kbd{f} key.@refill
829 @item f
830 @vindex reftex-revisit-to-follow
831 Toggle follow mode.  When follow mode is active, the other window will
832 always display the full context of the current label.  This is similar
833 to pressing @key{SPC} after each cursor motion.  Note that only context
834 in files already visited is shown.  @b{RefTeX} will not visit a file
835 just for follow mode.  See, however, the variable
836 @code{reftex-revisit-to-follow}.@refill
838 @item .
839 Show insertion point in another window.  This is the point from where you
840 called @code{reftex-reference}.@refill
842 @tablesubheading{Selecting a label and creating the reference}
843 @item @key{RET}
844 Insert a reference to the label at point into the buffer from which the
845 selection process was started.  When entries have been marked, @key{RET}
846 references all marked labels.@refill
848 @item mouse-2
849 @vindex reftex-highlight-selection
850 Clicking with mouse button 2 on a label will accept it like @key{RET}
851 would. See also variable @code{reftex-highlight-selection}, @ref{Options
852 (Misc)}.@refill
854 @vindex reftex-multiref-punctuation
855 @item m - + ,
856 Mark the current entry.  When several entries have been marked, pressing
857 @kbd{RET} will accept all of them and place them into several
858 @code{\ref} macros.  The special markers @samp{,-+} also store a
859 separator to be inserted before the corresponding reference.  So marking
860 six entries with the keys @samp{m , , - , +} will give a reference list
861 like this (see the variable @code{reftex-multiref-punctuation})
862 @example
863 In eqs. (1), (2), (3)--(4), (5) and (6)
864 @end example
866 @item u
867 Unmark a marked entry.
869 @c FIXME: Do we need `A' as well for consistency?
870 @cindex LaTeX packages, @code{saferef}
871 @cindex @code{saferef}, LaTeX package
872 @item a
873 Accept the marked entries and put all labels as a comma-separated list
874 into one @emph{single} @code{\ref} macro.  Some packages like
875 @file{saferef.sty} support multiple references in this way.@refill
877 @item l
878 Use the last referenced label(s) again.  This is equivalent to moving to
879 that label and pressing @key{RET}.@refill
881 @item @key{TAB}
882 Enter a label with completion.  This may also be a label which does not
883 yet exist in the document.
885 @item v
886 @cindex @code{varioref}, LaTeX package
887 @cindex @code{\vref}
888 @cindex LaTeX packages, @code{varioref}
889 Toggle between @code{\ref} and @code{\vref} macro for references.  The
890 @code{\vref} macro is defined in the @code{varioref} LaTeX package.
891 With this key you can force @b{Ref@TeX{}} to insert a @code{\vref}
892 macro.  The current state of this flag is displayed by the @samp{S<>}
893 indicator in the mode line of the selection buffer.@refill
895 @item V
896 @cindex @code{fancyref}, LaTeX package
897 @cindex @code{\fref}
898 @cindex @code{\Fref}
899 @cindex LaTeX packages, @code{fancyref}
900 Cycle between @code{\ref}, @code{\fref} and @code{\Fref}.  The
901 @code{\fref} and @code{\Fref} macros are defined in the @code{fancyref}
902 LaTeX package.  With this key you can force @b{Ref@TeX{}} to insert a
903 @code{\fref} or @code{\Fref} macro.  The current state of this flag is
904 displayed by the @samp{S<>} indicator in the mode line of the
905 selection buffer.
907 @tablesubheading{Exiting}
909 @item q
910 Exit the selection process without inserting any reference into the
911 buffer.@refill
913 @tablesubheading{Controlling what gets displayed}
914 @vindex reftex-label-menu-flags
915 The defaults for the following flags can be configured with the variable 
916 @code{reftex-label-menu-flags} (@pxref{Options (Referencing Labels)}).
918 @item c
919 Toggle the display of the one-line label definition context in the
920 selection buffer.@refill
922 @item F
923 Toggle the display of the file borders of a multifile document in the
924 selection buffer.@refill
926 @item t
927 Toggle the display of the table of contents in the selection buffer.
928 With prefix @var{arg}, change the maximum level of toc entries displayed 
929 to @var{arg}.  Chapters are level 1, section are level 2.@refill
931 @item #
932 Toggle the display of a label counter in the selection buffer.@refill
934 @item %
935 Toggle the display of labels hidden in comments in the selection
936 buffers.  Sometimes, you may have commented out parts of your document.
937 If these parts contain label definitions, @b{Ref@TeX{}} can still display
938 and reference these labels.@refill
940 @tablesubheading{Updating the buffer}
941 @item g
942 Update the menu.  This will rebuilt the menu from the internal label
943 list, but not reparse the document (see @kbd{r}).@refill
945 @item r
946 @vindex reftex-enable-partial-scans
947 Reparse the document to update the information on all labels and rebuild
948 the menu.  If the variable @code{reftex-enable-partial-scans} is
949 non-@code{nil} and your document is a multifile document, this will
950 reparse only a part of the document (the file in which the label at
951 point was defined).@refill
953 @item C-u r
954 Reparse the @emph{entire} document.
956 @item s
957 Switch the label category.  After prompting for another label category,
958 a menu for that category will be shown.@refill
960 @item x
961 Reference a label from an external document.  With the LaTeX package
962 @code{xr} it is possible to reference labels defined in another
963 document.  This key will switch to the label menu of an external
964 document and let you select a label from there (@pxref{xr (LaTeX
965 package),,xr}).@refill
967 @end table
969 @vindex reftex-select-label-map
970 In order to define additional commands for the selection process, the
971 keymap @code{reftex-select-label-map} may be used.@refill
973 @node Builtin Label Environments, Defining Label Environments, Referencing Labels, Labels and References
974 @section Builtin Label Environments
975 @cindex Builtin label environments
976 @cindex Label environments, builtin
977 @cindex Environments, builtin
978 @vindex reftex-label-alist
979 @vindex reftex-label-alist-builtin
981 @b{Ref@TeX{}} needs to be aware of the environments which can be referenced
982 with a label (i.e. which carry their own counters).  By default, @b{Ref@TeX{}}
983 recognizes all labeled environments and macros discussed in @cite{The
984 LaTeX Companion by Goossens, Mittelbach & Samarin, Addison-Wesley
985 1994.}.  These are:@refill
987 @itemize @minus
988 @item
989 @cindex @code{figure}, LaTeX environment
990 @cindex @code{figure*}, LaTeX environment
991 @cindex @code{table}, LaTeX environment
992 @cindex @code{table*}, LaTeX environment
993 @cindex @code{equation}, LaTeX environment
994 @cindex @code{eqnarray}, LaTeX environment
995 @cindex @code{enumerate}, LaTeX environment
996 @cindex @code{\footnote}, LaTeX macro
997 @cindex LaTeX macro @code{footnote}
998 @cindex LaTeX core
999 @code{figure}, @code{figure*}, @code{table}, @code{table*}, @code{equation},
1000 @code{eqnarray}, @code{enumerate}, the @code{\footnote} macro (this is
1001 the LaTeX core stuff)@refill
1002 @item
1003 @cindex AMS-LaTeX
1004 @cindex @code{amsmath}, LaTeX package
1005 @cindex LaTeX packages, @code{amsmath}
1006 @cindex @code{align}, AMS-LaTeX environment
1007 @cindex @code{gather}, AMS-LaTeX environment
1008 @cindex @code{multline}, AMS-LaTeX environment
1009 @cindex @code{flalign}, AMS-LaTeX environment
1010 @cindex @code{alignat}, AMS-LaTeX environment
1011 @cindex @code{xalignat}, AMS-LaTeX environment
1012 @cindex @code{xxalignat}, AMS-LaTeX environment
1013 @cindex @code{subequations}, AMS-LaTeX environment
1014 @code{align}, @code{gather}, @code{multline}, @code{flalign},
1015 @code{alignat}, @code{xalignat}, @code{xxalignat}, @code{subequations}
1016 (from AMS-LaTeX's @file{amsmath.sty} package)@refill
1017 @item
1018 @cindex @code{endnote}, LaTeX package
1019 @cindex LaTeX packages, @code{endnote}
1020 @cindex @code{\endnote}, LaTeX macro
1021 the @code{\endnote} macro (from @file{endnotes.sty})
1022 @item
1023 @cindex @code{fancybox}, LaTeX package
1024 @cindex LaTeX packages, @code{fancybox}
1025 @cindex @code{Beqnarray}, LaTeX environment
1026 @code{Beqnarray} (@file{fancybox.sty})
1027 @item
1028 @cindex @code{floatfig}, LaTeX package
1029 @cindex LaTeX packages, @code{floatfig}
1030 @cindex @code{floatingfig}, LaTeX environment
1031 @code{floatingfig} (@file{floatfig.sty})
1032 @item
1033 @cindex @code{longtable}, LaTeX package
1034 @cindex LaTeX packages, @code{longtable}
1035 @cindex @code{longtable}, LaTeX environment
1036 @code{longtable} (@file{longtable.sty})
1037 @item
1038 @cindex @code{picinpar}, LaTeX package
1039 @cindex LaTeX packages, @code{picinpar}
1040 @cindex @code{figwindow}, LaTeX environment
1041 @cindex @code{tabwindow}, LaTeX environment
1042 @code{figwindow}, @code{tabwindow} (@file{picinpar.sty})
1043 @item
1044 @cindex @code{sidecap}, LaTeX package
1045 @cindex LaTeX packages, @code{sidecap}
1046 @cindex @code{SCfigure}, LaTeX environment
1047 @cindex @code{SCtable}, LaTeX environment
1048 @code{SCfigure}, @code{SCtable} (@file{sidecap.sty})
1049 @item
1050 @cindex @code{rotating}, LaTeX package
1051 @cindex LaTeX packages, @code{rotating}
1052 @cindex @code{sidewaysfigure}, LaTeX environment
1053 @cindex @code{sidewaystable}, LaTeX environment
1054 @code{sidewaysfigure}, @code{sidewaystable} (@file{rotating.sty})
1055 @item
1056 @cindex @code{subfig}, LaTeX package
1057 @cindex LaTeX packages, @code{subfigure}
1058 @cindex @code{subfigure}, LaTeX environment
1059 @cindex @code{subfigure*}, LaTeX environment
1060 @code{subfigure}, @code{subfigure*}, the @code{\subfigure} macro
1061 (@file{subfigure.sty})@refill
1062 @item
1063 @cindex @code{supertab}, LaTeX package
1064 @cindex LaTeX packages, @code{supertab}
1065 @cindex @code{supertabular}, LaTeX environment
1066 @code{supertabular} (@file{supertab.sty})
1067 @item
1068 @cindex @code{wrapfig}, LaTeX package
1069 @cindex LaTeX packages, @code{wrapfig}
1070 @cindex @code{wrapfigure}, LaTeX environment
1071 @code{wrapfigure} (@file{wrapfig.sty})
1072 @end itemize
1074 If you want to use other labeled environments, defined with
1075 @code{\newtheorem}, @b{Ref@TeX{}} needs to be configured to recognize
1076 them (@pxref{Defining Label Environments}).@refill
1078 @node Defining Label Environments, Reference Info, Builtin Label Environments, Labels and References
1079 @section Defining Label Environments
1080 @cindex Label environments, defining
1082 @vindex reftex-label-alist
1083 @b{Ref@TeX{}} can be configured to recognize additional labeled
1084 environments and macros.  This is done with the variable
1085 @code{reftex-label-alist} (@pxref{Options (Defining Label
1086 Environments)}).  If you are not familiar with Lisp, you can use the
1087 @code{custom} library to configure this rather complex variable.  To do
1088 this, use
1090 @example
1091 @kbd{M-x customize-variable @key{RET} reftex-label-alist @key{RET}}
1092 @end example
1094 @vindex reftex-label-alist-builtin
1095 Here we will discuss a few examples, in order to make things clearer.
1096 It can also be instructive to look at the constant
1097 @code{reftex-label-alist-builtin} which contains the entries for
1098 all the builtin environments and macros (@pxref{Builtin Label
1099 Environments}).@refill
1101 @menu
1102 * Theorem and Axiom::                Defined with @code{\newenvironment}.
1103 * Quick Equation::                   When a macro sets the label type.
1104 * Figure Wrapper::                   When a macro argument is a label.
1105 * Adding Magic Words::               Other words for other languages.
1106 * Using \eqref::                     How to switch to this AMS-LaTeX macro.
1107 * Non-Standard Environments::        Environments without \begin and \end
1108 * Putting it Together::              How to combine many entries.
1109 @end menu
1111 @node Theorem and Axiom, Quick Equation, , Defining Label Environments
1112 @subsection Theorem and Axiom Environments
1113 @cindex @code{theorem}, newtheorem
1114 @cindex @code{axiom}, newtheorem
1115 @cindex @code{\newtheorem}
1117 Suppose you are using @code{\newtheorem} in LaTeX in order to define two
1118 new environments, @code{theorem} and @code{axiom}@refill
1120 @example
1121 \newtheorem@{axiom@}@{Axiom@}
1122 \newtheorem@{theorem@}@{Theorem@}
1123 @end example
1125 @noindent
1126 to be used like this:
1128 @example
1129 \begin@{axiom@}
1130 \label@{ax:first@}
1131   ....
1132 \end@{axiom@}
1133 @end example
1135 So we need to tell @b{Ref@TeX{}} that @code{theorem} and @code{axiom} are new
1136 labeled environments which define their own label categories.  We can
1137 either use Lisp to do this (e.g. in @file{.emacs}) or use the custom
1138 library.  With Lisp it would look like this
1140 @lisp
1141 (setq reftex-label-alist
1142    '(("axiom"   ?a "ax:"  "~\\ref@{%s@}" nil ("axiom"   "ax.") -2)
1143      ("theorem" ?h "thr:" "~\\ref@{%s@}" t   ("theorem" "th.") -3)))
1144 @end lisp
1146 The type indicator characters @code{?a} and @code{?h} are used for
1147 prompts when @b{Ref@TeX{}} queries for a label type.  @code{?h}
1148 was chosen for @code{theorem} since @code{?t} is already taken by
1149 @code{table}.  Note that also @code{?s}, @code{?f}, @code{?e},
1150 @code{?i}, @code{?n} are already used for standard environments.@refill
1152 @noindent
1153 The labels for Axioms and Theorems will have the prefixes @samp{ax:} and
1154 @samp{thr:}, respectively.  @xref{AUCTeX}, for information on how
1155 AUCTeX can use RefTeX to automatically create labels when a new environment
1156 is inserted into a buffer.  Additionally, the following needs to be
1157 added to one's .emacs file before AUCTeX will automatically create
1158 labels for the new environments.
1160 @lisp
1161 (add-hook 'LaTeX-mode-hook
1162    (lambda ()
1163      (LaTeX-add-environments
1164        '("axiom" LaTeX-env-label)
1165        '("theorem" LaTeX-env-label))))
1166 @end lisp
1169 @noindent
1170 The @samp{~\ref@{%s@}} is a format string indicating how to insert
1171 references to these labels.@refill
1173 @noindent
1174 The next item indicates how to grab context of the label definition.@refill
1175 @itemize @minus
1176 @item
1177 @code{t} means to get it from a default location (from the beginning of
1178 a @code{\macro} or after the @code{\begin} statement).  @code{t} is
1179 @emph{not} a good choice for eqnarray and similar environments.@refill
1180 @item
1181 @code{nil} means to use the text right after the label definition.@refill
1182 @item
1183 For more complex ways of getting context, see the variable
1184 @code{reftex-label-alist} (@ref{Options (Defining Label
1185 Environments)}).@refill
1186 @end itemize
1188 The following list of strings is used to guess the correct label type
1189 from the word before point when creating a reference.  E.g. if you
1190 write: @samp{As we have shown in Theorem} and then press @kbd{C-c )},
1191 @b{Ref@TeX{}} will know that you are looking for a theorem label and
1192 restrict the menu to only these labels without even asking.@refill
1194 The final item in each entry is the level at which the environment
1195 should produce entries in the table of context buffer.  If the number is
1196 positive, the environment will produce numbered entries (like
1197 @code{\section}), if it is negative the entries will be unnumbered (like
1198 @code{\section*}).  Use this only for environments which structure the
1199 document similar to sectioning commands.  For everything else, omit the
1200 item.@refill
1202 To do the same configuration with @code{customize}, you need to click on
1203 the @code{[INS]} button twice to create two templates and fill them in
1204 like this:@refill
1206 @example
1207 Reftex Label Alist: [Hide]
1208 [INS] [DEL] Package or Detailed   : [Value Menu] Detailed:
1209             Environment or \macro : [Value Menu] String: axiom
1210             Type specification    : [Value Menu] Char  : a
1211             Label prefix string   : [Value Menu] String: ax:
1212             Label reference format: [Value Menu] String: ~\ref@{%s@}
1213             Context method        : [Value Menu] After label
1214             Magic words:
1215               [INS] [DEL] String: axiom
1216               [INS] [DEL] String: ax.
1217               [INS]
1218             [X] Make TOC entry    : [Value Menu] Level: -2
1219 [INS] [DEL] Package or Detailed   : [Value Menu] Detailed:
1220             Environment or \macro : [Value Menu] String: theorem
1221             Type specification    : [Value Menu] Char  : h
1222             Label prefix string   : [Value Menu] String: thr:
1223             Label reference format: [Value Menu] String: ~\ref@{%s@}
1224             Context method        : [Value Menu] Default position
1225             Magic words:
1226               [INS] [DEL] String: theorem
1227               [INS] [DEL] String: theor.
1228               [INS] [DEL] String: th.
1229               [INS]
1230             [X] Make TOC entry    : [Value Menu] Level: -3
1231 @end example
1233 @vindex reftex-insert-label-flags
1234 @vindex reftex-label-menu-flags
1235 Depending on how you would like the label insertion and selection for
1236 the new environments to work, you might want to add the letters @samp{a}
1237 and @samp{h} to some of the flags in the variables
1238 @code{reftex-insert-label-flags} (@pxref{Options (Creating Labels)})
1239 and @code{reftex-label-menu-flags} (@pxref{Options (Referencing
1240 Labels)}).@refill
1243 @node Quick Equation, Figure Wrapper, Theorem and Axiom , Defining Label Environments
1244 @subsection Quick Equation Macro
1245 @cindex Quick equation macro
1246 @cindex Macros as environment wrappers
1248 Suppose you would like to have a macro for quick equations.  It
1249 could be defined like this:
1251 @example
1252 \newcommand@{\quickeq@}[1]@{\begin@{equation@} #1 \end@{equation@}@}
1253 @end example
1255 @noindent
1256 and used like this:
1258 @example
1259 Einstein's equation is \quickeq@{E=mc^2 \label@{eq:einstein@}@}.
1260 @end example
1262 We need to tell @b{Ref@TeX{}} that any label defined in the argument of the
1263 @code{\quickeq} is an equation label.  Here is how to do this with lisp:
1265 @lisp
1266 (setq reftex-label-alist '(("\\quickeq@{@}" ?e nil nil 1 nil)))
1267 @end lisp
1269 The first element in this list is now the macro with empty braces as an
1270 @emph{image} of the macro arguments.  @code{?e} indicates that this is
1271 an equation label, the different @code{nil} elements indicate to use the
1272 default values for equations.  The @samp{1} as the fifth element
1273 indicates that the context of the label definition should be the 1st
1274 argument of the macro.@refill
1276 Here is again how this would look in the customization buffer:
1278 @example
1279 Reftex Label Alist: [Hide]
1280 [INS] [DEL] Package or Detailed   : [Value Menu] Detailed:
1281             Environment or \macro : [Value Menu] String: \quickeq@{@}
1282             Type specification    : [Value Menu] Char  : e
1283             Label prefix string   : [Value Menu] Default
1284             Label reference format: [Value Menu] Default
1285             Context method        : [Value Menu] Macro arg nr: 1
1286             Magic words:
1287               [INS]
1288             [ ] Make TOC entry    : [Value Menu] No entry
1289 @end example
1291 @node Figure Wrapper, Adding Magic Words, Quick Equation, Defining Label Environments
1292 @subsection Figure Wrapping Macro
1293 @cindex Macros as environment wrappers
1294 @cindex Figure wrapping macro
1296 Suppose you want to make figures not directly with the figure
1297 environment, but with a macro like
1299 @example
1300 \newcommand@{\myfig@}[5][tbp]@{%
1301   \begin@{figure@}[#1]
1302     \epsimp[#5]@{#2@}
1303     \caption@{#3@}
1304     \label@{#4@}
1305   \end@{figure@}@}
1306 @end example
1308 @noindent
1309 which would be called like
1311 @example
1312 \myfig[htp]@{filename@}@{caption text@}@{label@}@{1@}
1313 @end example
1315 Now we need to tell @b{Ref@TeX{}} that the 4th argument of the
1316 @code{\myfig} macro @emph{is itself} a figure label, and where to find
1317 the context.@refill
1319 @lisp
1320 (setq reftex-label-alist
1321       '(("\\myfig[]@{@}@{@}@{*@}@{@}" ?f nil nil 3)))
1322 @end lisp
1324 The empty pairs of brackets indicate the different arguments of the
1325 @code{\myfig} macro. The @samp{*} marks the label argument.  @code{?f}
1326 indicates that this is a figure label which will be listed together with
1327 labels from normal figure environments.  The @code{nil} entries for
1328 prefix and reference format mean to use the defaults for figure labels.
1329 The @samp{3} for the context method means to grab the 3rd macro argument
1330 - the caption.@refill
1332 As a side effect of this configuration, @code{reftex-label} will now
1333 insert the required naked label (without the @code{\label} macro) when
1334 point is directly after the opening parenthesis of a @code{\myfig} macro
1335 argument.@refill
1337 Again, here the configuration in the customization buffer:
1339 @example
1340 [INS] [DEL] Package or Detailed   : [Value Menu] Detailed:
1341             Environment or \macro : [Value Menu] String: \myfig[]@{@}@{@}@{*@}@{@}
1342             Type specification    : [Value Menu] Char  : f 
1343             Label prefix string   : [Value Menu] Default
1344             Label reference format: [Value Menu] Default
1345             Context method        : [Value Menu] Macro arg nr: 3
1346             Magic words:
1347               [INS]
1348             [ ] Make TOC entry    : [Value Menu] No entry
1349 @end example
1351 @node Adding Magic Words, Using \eqref, Figure Wrapper, Defining Label Environments
1352 @subsection Adding Magic Words
1353 @cindex Magic words
1354 @cindex German magic words
1355 @cindex Label category
1357 Sometimes you don't want to define a new label environment or macro, but
1358 just change the information associated with a label category.  Maybe you
1359 want to add some magic words, for another language.  Changing only the
1360 information associated with a label category is done by giving
1361 @code{nil} for the environment name and then specify the items you want
1362 to define.  Here is an example which adds German magic words to all
1363 predefined label categories.@refill
1365 @lisp
1366 (setq reftex-label-alist
1367   '((nil ?s nil nil nil ("Kapitel" "Kap." "Abschnitt" "Teil"))
1368     (nil ?e nil nil nil ("Gleichung" "Gl."))
1369     (nil ?t nil nil nil ("Tabelle"))
1370     (nil ?f nil nil nil ("Figur" "Abbildung" "Abb."))
1371     (nil ?n nil nil nil ("Anmerkung" "Anm."))
1372     (nil ?i nil nil nil ("Punkt"))))
1373 @end lisp
1375 @node Using \eqref, Non-Standard Environments, Adding Magic Words, Defining Label Environments
1376 @subsection Using @code{\eqref}
1377 @cindex @code{\eqref}, AMS-LaTeX macro
1378 @cindex AMS-LaTeX
1379 @cindex Label category
1381 Another case where one only wants to change the information associated
1382 with the label category is to change the macro which is used for
1383 referencing the label.  When working with the AMS-LaTeX stuff, you might
1384 prefer @code{\eqref} for doing equation references.  Here is how to
1385 do this:
1387 @lisp
1388 (setq reftex-label-alist '((nil ?e nil "~\\eqref@{%s@}" nil nil)))
1389 @end lisp
1391 @b{Ref@TeX{}} has also a predefined symbol for this special purpose.  The
1392 following is equivalent to the line above.@refill
1394 @lisp
1395 (setq reftex-label-alist '(AMSTeX))
1396 @end lisp
1398 Note that this is automatically done by the @file{amsmath.el} style file
1399 of AUCTeX (@pxref{Style Files}) - so if you use AUCTeX,
1400 this configuration will not be necessary.@refill
1402 @node Non-Standard Environments, Putting it Together, Using \eqref, Defining Label Environments
1403 @subsection Non-standard Environments
1404 @cindex Non-standard environments
1405 @cindex Environments without @code{\begin}
1406 @cindex Special parser functions
1407 @cindex Parser functions, for special environments
1409 Some LaTeX packages define environment-like structures without using the
1410 standard @samp{\begin..\end} structure.  @b{Ref@TeX{}} cannot parse
1411 these directly, but you can write your own special-purpose parser and
1412 use it instead of the name of an environment in an entry for
1413 @code{reftex-label-alist}.  The function should check if point is
1414 currently in the special environment it was written to detect.  If so,
1415 it must return a buffer position indicating the start of this
1416 environment.  The return value must be @code{nil} on failure to detect
1417 the environment.  The function is called with one argument @var{bound}.
1418 If non-@code{nil}, @var{bound} is a boundary for backwards searches
1419 which should be observed.  We will discuss two examples.@refill
1421 @cindex LaTeX commands, abbreviated
1423 Some people define abbreviations for
1424 environments, like @code{\be} for @code{\begin@{equation@}}, and
1425 @code{\ee} for @code{\end@{equation@}}.  The parser function would have
1426 to search backward for these macros.  When the first match is
1427 @code{\ee}, point is not in this environment.  When the first match is
1428 @code{\be}, point is in this environment and the function must return
1429 the beginning of the match.  To avoid scanning too far, we can also look
1430 for empty lines which cannot occur inside an equation environment.
1431 Here is the setup:@refill
1433 @lisp
1434 ;; Setup entry in reftex-label-alist, using all defaults for equations
1435 (setq reftex-label-alist '((detect-be-ee ?e nil nil nil nil)))
1437 (defun detect-be-ee (bound)
1438   ;; Search backward for the macros or an empty line
1439   (if (re-search-backward 
1440        "\\(^[ \t]*\n\\|\\\\ee\\>\\)\\|\\(\\\\be\\>\\)" bound t)
1441       (if (match-beginning 2)
1442           (match-beginning 2)  ; Return start of environment
1443         nil)                   ; Return nil because env is closed
1444     nil))                      ; Return nil for not found
1445 @end lisp
1447 @cindex @code{linguex}, LaTeX package
1448 @cindex LaTeX packages, @code{linguex}
1449 A more complex example is the @file{linguex.sty} package which defines
1450 list macros @samp{\ex.}, @samp{\a.}, @samp{\b.} etc. for lists which are
1451 terminated by @samp{\z.} or by an empty line.@refill
1453 @example
1454 \ex.  \label@{ex:12@} Some text in an exotic language ...
1455       \a. \label@{ex:13@} more stuff
1456       \b. \label@{ex:14@} still more stuff
1457           \a. List on a deeper level
1458           \b. Another item
1459           \b. and the third one
1460       \z.
1461       \b. Third item on this level.
1463 ... text after the empty line terminating all lists
1464 @end example
1466 The difficulty is that the @samp{\a.} lists can nest and that an empty
1467 line terminates all list levels in one go.  So we have to count nesting
1468 levels between @samp{\a.} and @samp{\z.}.  Here is the implementation
1469 for @b{Ref@TeX{}}.
1471 @lisp
1472 (setq reftex-label-alist
1473       '((detect-linguex ?x "ex:" "~\\ref@{%s@}" nil ("Example" "Ex."))))
1475 (defun detect-linguex (bound)
1476   (let ((cnt 0))
1477     (catch 'exit
1478       (while 
1479           ;; Search backward for all possible delimiters
1480           (re-search-backward
1481            (concat "\\(^[ \t]*\n\\)\\|\\(\\\\z\\.\\)\\|"
1482                    "\\(\\ex[ig]?\\.\\)\\|\\(\\\\a\\.\\)")
1483            nil t)
1484         ;; Check which delimiter was matched.
1485         (cond 
1486          ((match-beginning 1)
1487           ;; empty line terminates all - return nil
1488           (throw 'exit nil))
1489          ((match-beginning 2)
1490           ;; \z. terminates one list level - decrease nesting count
1491           (decf cnt))
1492          ((match-beginning 3)
1493           ;; \ex. : return match unless there was a \z. on this level
1494           (throw 'exit (if (>= cnt 0) (match-beginning 3) nil)))
1495          ((match-beginning 4)
1496           ;; \a. : return match when on level 0, otherwise
1497           ;;       increment nesting count
1498           (if (>= cnt 0)
1499               (throw 'exit (match-beginning 4))
1500             (incf cnt))))))))
1501 @end lisp
1503 @node Putting it Together, , Non-Standard Environments, Defining Label Environments
1504 @subsection Putting it all together
1506 When you have to put several entries into @code{reftex-label-alist}, just
1507 put them after each other in a list, or create that many templates in
1508 the customization buffer.  Here is a lisp example which uses several of
1509 the entries described above:
1511 @lisp
1512 (setq reftex-label-alist
1513   '(("axiom"   ?a "ax:"  "~\\ref@{%s@}" nil ("axiom"   "ax.") -2)
1514     ("theorem" ?h "thr:" "~\\ref@{%s@}" t   ("theorem" "theor." "th.") -3)
1515     ("\\quickeq@{@}" ?e nil nil 1 nil)
1516     AMSTeX
1517     ("\\myfig[]@{@}@{@}@{*@}@{@}" ?f nil nil 3)
1518     (detect-linguex ?x "ex:" "~\\ref@{%s@}" nil ("Example" "Ex."))))
1519 @end lisp
1521 @node Reference Info, xr (LaTeX package), Defining Label Environments, Labels and References
1522 @section Reference Info
1523 @findex reftex-view-crossref
1524 @findex reftex-mouse-view-crossref
1525 @cindex Cross-references, displaying
1526 @cindex Reference info
1527 @cindex Displaying cross-references
1528 @cindex Viewing cross-references
1529 @kindex C-c &
1530 @kindex S-mouse-2
1532 When point is idle for more than @code{reftex-idle-time} seconds on the
1533 argument of a @code{\ref} macro, the echo area will display some
1534 information about the label referenced there.  Note that the information
1535 is only displayed if the echo area is not occupied by a different
1536 message.
1538 @b{Ref@TeX{}} can also display the label definition corresponding to a
1539 @code{\ref} macro, or all reference locations corresponding to a
1540 @code{\label} macro.  @xref{Viewing Cross-References}, for more
1541 information.@refill
1543 @node xr (LaTeX package), varioref (LaTeX package), Reference Info, Labels and References
1544 @section @code{xr}: Cross-Document References
1545 @cindex @code{xr}, LaTeX package
1546 @cindex LaTeX packages, @code{xr}
1547 @cindex @code{\externaldocument}
1548 @cindex External documents
1549 @cindex References to external documents
1550 @cindex Cross-document references
1552 The LaTeX package @code{xr} makes it possible to create references to
1553 labels defined in external documents.  The preamble of a document using
1554 @code{xr} will contain something like this:@refill
1556 @example
1557 \usepackage@{xr@}
1558 \externaldocument[V1-]@{volume1@}
1559 \externaldocument[V3-]@{volume3@}
1560 @end example
1562 @noindent
1563 and we can make references to any labels defined in these
1564 external documents by using the prefixes @samp{V1-} and @samp{V3-},
1565 respectively.@refill
1567 @b{Ref@TeX{}} can be used to create such references as well.  Start the
1568 referencing process normally, by pressing @kbd{C-c )}.  Select a label
1569 type if necessary.  When you see the label selection buffer, pressing
1570 @kbd{x} will switch to the label selection buffer of one of the external
1571 documents.  You may then select a label as before and @b{Ref@TeX{}} will
1572 insert it along with the required prefix.@refill
1574 For this kind of inter-document cross-references, saving of parsing
1575 information and the use of multiple selection buffers can mean a large
1576 speed-up (@pxref{Optimizations}).@refill
1578 @node varioref (LaTeX package), fancyref (LaTeX package), xr (LaTeX package), Labels and References
1579 @section @code{varioref}: Variable Page References
1580 @cindex @code{varioref}, LaTeX package
1581 @cindex @code{\vref}
1582 @cindex LaTeX packages, @code{varioref}
1583 @vindex reftex-vref-is-default
1584 @code{varioref} is a frequently used LaTeX package to create
1585 cross--references with page information.  When you want to make a
1586 reference with the @code{\vref} macro, just press the @kbd{v} key in the
1587 selection buffer to toggle between @code{\ref} and @code{\vref}
1588 (@pxref{Referencing Labels}).  The mode line of the selection buffer
1589 shows the current status of this switch.  If you find that you almost
1590 always use @code{\vref}, you may want to make it the default by
1591 customizing the variable @code{reftex-vref-is-default}.  If this
1592 toggling seems too inconvenient, you can also use the command
1593 @code{reftex-varioref-vref}@footnote{bind it to @kbd{C-c v}.}.
1594 Or use AUCTeX to create your macros (@pxref{AUCTeX}).@refill
1596 @node fancyref (LaTeX package), , varioref (LaTeX package), Labels and References
1597 @section @code{fancyref}: Fancy Cross References
1598 @cindex @code{fancyref}, LaTeX package
1599 @cindex @code{\fref}
1600 @cindex @code{\Fref}
1601 @cindex LaTeX packages, @code{fancyref}
1602 @vindex reftex-fref-is-default
1603 @code{fancyref} is a LaTeX package where a macro call like
1604 @code{\fref@{@var{fig:map-of-germany}@}} creates not only the number of
1605 the referenced counter but also the complete text around it, like
1606 @samp{Figure 3 on the preceding page}.  In order to make it work you
1607 need to use label prefixes like @samp{fig:} consistently - something
1608 @b{Ref@TeX{}} does automatically.  When you want to make a reference
1609 with the @code{\fref} macro, just press the @kbd{V} key in the selection
1610 buffer to cycle between @code{\ref}, @code{\fref} and @code{\Fref}
1611 (@pxref{Referencing Labels}).  The mode line of the selection buffer
1612 shows the current status of this switch.  If this cycling seems
1613 inconvenient, you can also use the commands @code{reftex-fancyref-fref}
1614 and @code{reftex-fancyref-Fref}@footnote{bind them to @kbd{C-c
1615 f} and @kbd{C-c F}.}.  Or use AUCTeX to create your macros
1616 (@pxref{AUCTeX}).@refill
1618 @node Citations, Index Support, Labels and References, Top
1619 @chapter Citations
1620 @cindex Citations
1621 @cindex @code{\cite}
1623 Citations in LaTeX are done with the @code{\cite} macro or variations of
1624 it.  The argument of the macro is a citation key which identifies an
1625 article or book in either a BibTeX database file or in an explicit
1626 @code{thebibliography} environment in the document.  @b{Ref@TeX{}}'s
1627 support for citations helps to select the correct key quickly.@refill
1629 @menu
1630 * Creating Citations::               How to create them.
1631 * Citation Styles::                  Natbib, Harvard, Chicago and Co.
1632 * Citation Info::                    View the corresponding database entry.
1633 * Chapterbib and Bibunits::          Multiple bibliographies in a Document.
1634 * Citations Outside LaTeX::          How to make citations in Emails etc.
1635 @end menu
1637 @node Creating Citations, Citation Styles, , Citations
1638 @section Creating Citations
1639 @cindex Creating citations
1640 @cindex Citations, creating
1641 @findex reftex-citation
1642 @kindex C-c [
1643 @cindex Selection buffer, citations
1644 @cindex Selection process
1646 In order to create a citation, press @kbd{C-c [}.  @b{Ref@TeX{}} then
1647 prompts for a regular expression which will be used to search through
1648 the database and present the list of matches to choose from in a
1649 selection process similar to that for selecting labels
1650 (@pxref{Referencing Labels}).@refill
1652 The regular expression uses an extended syntax: @samp{&&} defines a
1653 logic @code{and} for regular expressions. For example
1654 @samp{Einstein&&Bose} will match all articles which mention
1655 Bose-Einstein condensation, or which are co-authored by Bose and
1656 Einstein.  When entering the regular expression, you can complete on
1657 known citation keys.  RefTeX also offers a default when prompting for a
1658 regular expression.  This default is the word before the cursor or the
1659 word before the current @samp{\cite} command.  Sometimes this may be a
1660 good search key.@refill
1662 @cindex @code{\bibliography}
1663 @cindex @code{thebibliography}, LaTeX environment
1664 @cindex @code{BIBINPUTS}, environment variable
1665 @cindex @code{TEXBIB}, environment variable
1666 @b{Ref@TeX{}} prefers to use BibTeX database files specified with a
1667 @code{\bibliography} macro to collect its information.  Just like
1668 BibTeX, it will search for the specified files in the current directory
1669 and along the path given in the environment variable @code{BIBINPUTS}.
1670 If you do not use BibTeX, but the document contains an explicit
1671 @code{thebibliography} environment, @b{Ref@TeX{}} will collect its
1672 information from there.  Note that in this case the information
1673 presented in the selection buffer will just be a copy of relevant
1674 @code{\bibitem} entries, not the structured listing available with
1675 BibTeX database files.@refill
1677 @kindex ?
1678 In the selection buffer, the following keys provide special commands.  A
1679 summary of this information is always available from the selection
1680 process by pressing @kbd{?}.@refill
1682 @table @kbd
1683 @tablesubheading{General}
1684 @item ?
1685 Show a summary of available commands.
1687 @item 0-9,-
1688 Prefix argument.
1690 @tablesubheading{Moving around}
1691 @item n
1692 Go to next article.
1694 @item p
1695 Go to previous article.
1697 @tablesubheading{Access to full database entries}
1698 @item @key{SPC}
1699 Show the database entry corresponding to the article at point, in
1700 another window.  See also the @kbd{f} key.@refill
1702 @item f
1703 Toggle follow mode.  When follow mode is active, the other window will
1704 always display the full database entry of the current article.  This is
1705 equivalent to pressing @key{SPC} after each cursor motion.  With BibTeX
1706 entries, follow mode can be rather slow.@refill
1708 @tablesubheading{Selecting entries and creating the citation}
1709 @item @key{RET}
1710 Insert a citation referencing the article at point into the buffer from
1711 which the selection process was started.@refill
1713 @item mouse-2
1714 @vindex reftex-highlight-selection
1715 Clicking with mouse button 2 on a citation will accept it like @key{RET}
1716 would.  See also variable @code{reftex-highlight-selection}, @ref{Options
1717 (Misc)}.@refill
1719 @item m
1720 Mark the current entry.  When one or several entries are marked,
1721 pressing @kbd{a} or @kbd{A} accepts all marked entries.  Also,
1722 @key{RET} behaves like the @kbd{a} key.
1724 @item u
1725 Unmark a marked entry.
1727 @item a
1728 Accept all (marked) entries in the selection buffer and create a single
1729 @code{\cite} macro referring to them.@refill
1731 @item A
1732 Accept all (marked) entries in the selection buffer and create a
1733 separate @code{\cite} macro for each of it.@refill
1735 @item @key{TAB}
1736 Enter a citation key with completion.  This may also be a key which does
1737 not yet exist.
1739 @item .
1740 Show insertion point in another window.  This is the point from where you
1741 called @code{reftex-citation}.@refill
1743 @tablesubheading{Exiting}
1744 @item q
1745 Exit the selection process without inserting a citation into the
1746 buffer.@refill
1748 @tablesubheading{Updating the buffer}
1750 @item g
1751 Start over with a new regular expression.  The full database will be
1752 rescanned with the new expression (see also @kbd{r}).@refill
1754 @c FIXME: Should we use something else here? r is usually rescan!
1755 @item r
1756 Refine the current selection with another regular expression.  This will
1757 @emph{not} rescan the entire database, but just the already selected
1758 entries.@refill
1760 @end table
1762 @vindex reftex-select-bib-map
1763 In order to define additional commands for this selection process, the
1764 keymap @code{reftex-select-bib-map} may be used.@refill
1766 @node Citation Styles, Citation Info, Creating Citations, Citations
1767 @section Citation Styles
1768 @cindex Citation styles
1769 @cindex Citation styles, @code{natbib}
1770 @cindex Citation styles, @code{harvard}
1771 @cindex Citation styles, @code{chicago}
1772 @cindex @code{natbib}, citation style
1773 @cindex @code{harvard}, citation style
1774 @cindex @code{chicago}, citation style
1776 @vindex reftex-cite-format
1777 The standard LaTeX macro @code{\cite} works well with numeric or simple
1778 key citations.  To deal with the more complex task of author-year
1779 citations as used in many natural sciences, a variety of packages has
1780 been developed which define derived forms of the @code{\cite} macro.
1781 @b{Ref@TeX{}} can be configured to produce these citation macros as well by
1782 setting the variable @code{reftex-cite-format}.  For the most commonly
1783 used packages (@code{natbib}, @code{harvard}, @code{chicago}) this may
1784 be done from the menu, under @code{Ref->Citation Styles}.  Since there
1785 are usually several macros to create the citations, executing
1786 @code{reftex-citation} (@kbd{C-c [}) starts by prompting for the correct
1787 macro.  For the Natbib style, this looks like this:
1789 @example
1790 SELECT A CITATION FORMAT
1792 [^M]   \cite@{%l@}
1793 [t]    \citet@{%l@}
1794 [T]    \citet*@{%l@}
1795 [p]    \citep@{%l@}
1796 [P]    \citep*@{%l@}
1797 [e]    \citep[e.g.][]@{%l@}
1798 [s]    \citep[see][]@{%l@}
1799 [a]    \citeauthor@{%l@}
1800 [A]    \citeauthor*@{%l@}
1801 [y]    \citeyear@{%l@}
1802 @end example
1804 Following the most generic of these packages, @code{natbib}, the builtin
1805 citation packages always accept the @kbd{t} key for a @emph{textual}
1806 citation (like: @code{Jones et al. (1997) have shown...})  as well as 
1807 the @kbd{p} key for a parenthetical citation (like: @code{As shown
1808 earlier (Jones et al, 1997)}).@refill
1810 To make one of these styles the default, customize the variable
1811 @code{reftex-cite-format} or put into @file{.emacs}:
1813 @lisp
1814 (setq reftex-cite-format 'natbib)
1815 @end lisp
1817 You can also use AUCTeX style files to automatically set the
1818 citation style based on the @code{usepackage} commands in a given
1819 document.  @xref{Style Files}, for information on how to set up the style
1820 files correctly.@refill
1822 @node Citation Info, Chapterbib and Bibunits, Citation Styles, Citations, Top
1823 @section Citation Info
1824 @cindex Displaying citations
1825 @cindex Citations, displaying
1826 @cindex Citation info
1827 @cindex Viewing citations
1828 @kindex C-c &
1829 @kindex S-mouse-2
1830 @findex reftex-view-crossref
1831 @findex reftex-mouse-view-crossref
1833 When point is idle for more than @code{reftex-idle-time} seconds on the
1834 argument of a @code{\cite} macro, the echo area will display some
1835 information about the article cited there.  Note that the information is
1836 only displayed if the echo area is not occupied by a different message.
1838 @b{Ref@TeX{}} can also display the @code{\bibitem} or BibTeX database
1839 entry corresponding to a @code{\cite} macro, or all citation locations
1840 corresponding to a @code{\bibitem} or BibTeX database entry.
1841 @xref{Viewing Cross-References}.@refill
1843 @node Chapterbib and Bibunits, Citations Outside LaTeX, Citation Info, Citations
1844 @section Chapterbib and Bibunits
1845 @cindex @code{chapterbib}, LaTeX package
1846 @cindex @code{bibunits}, LaTeX package
1847 @cindex Bibliographies, multiple
1849 @code{chapterbib} and @code{bibunits} are two LaTeX packages which
1850 produce multiple bibliographies in a document.  This is no problem for
1851 @b{Ref@TeX{}} as long as all bibliographies use the same BibTeX database
1852 files.  If they do not, it is best to have each document part in a
1853 separate file (as it is required for @code{chapterbib} anyway).  Then
1854 @b{Ref@TeX{}} will still scan the locally relevant databases correctly.  If
1855 you have multiple bibliographies within a @emph{single file}, this may
1856 or may not be the case.
1858 @node Citations Outside LaTeX, , Chapterbib and Bibunits, Citations
1859 @section Citations outside LaTeX
1860 @cindex Citations outside LaTeX
1861 @vindex reftex-default-bibliography
1863 The command @code{reftex-citation} can also be executed outside a LaTeX
1864 buffer.  This can be useful to reference articles in the mail buffer and
1865 other documents.  You should @emph{not} enter @code{reftex-mode} for
1866 this, just execute the command.  The list of BibTeX files will in this
1867 case be taken from the variable @code{reftex-default-bibliography}.
1868 Setting the variable @code{reftex-cite-format} to the symbol
1869 @code{locally} does a decent job of putting all relevant information
1870 about a citation directly into the buffer.  Here is the lisp code to add
1871 the @kbd{C-c [} binding to the mail buffer.  It also provides a local
1872 binding for @code{reftex-cite-format}.@refill
1874 @lisp
1875 (add-hook 'mail-setup-hook
1876           (lambda () (define-key mail-mode-map "\C-c["
1877                        (lambda () (interactive)
1878                          (require 'reftex)
1879                          (let ((reftex-cite-format 'locally))
1880                            (reftex-citation))))))
1881 @end lisp
1883 @node Index Support, Viewing Cross-References, Citations, Top
1884 @chapter Index Support
1885 @cindex Index Support
1886 @cindex @code{\index}
1888 LaTeX has builtin support for creating an Index.  The LaTeX core
1889 supports two different indices, the standard index and a glossary.  With
1890 the help of special LaTeX packages (@file{multind.sty} or
1891 @file{index.sty}), any number of indices can be supported.
1893 Index entries are created with the @code{\index@{@var{entry}@}} macro.
1894 All entries defined in a document are written out to the @file{.aux}
1895 file.  A separate tool must be used to convert this information into a
1896 nicely formatted index.  Tools used with LaTeX include @code{MakeIndex}
1897 and @code{xindy}.@refill
1899 Indexing is a very difficult task.  It must follow strict conventions to
1900 make the index consistent and complete.  There are basically two
1901 approaches one can follow, and both have their merits.
1903 @enumerate
1904 @item
1905 Part of the indexing should already be done with the markup.  The
1906 document structure should be reflected in the index, so when starting
1907 new sections, the basic topics of the section should be indexed.  If the
1908 document contains definitions, theorems or the like, these should all
1909 correspond to appropriate index entries.  This part of the index can
1910 very well be developed along with the document.  Often it is worthwhile
1911 to define special purpose macros which define an item and at the same
1912 time make an index entry, possibly with special formatting to make the
1913 reference page in the index bold or underlined.  To make @b{Ref@TeX{}}
1914 support for indexing possible, these special macros must be added to
1915 @b{Ref@TeX{}}'s configuration (@pxref{Defining Index Macros}).@refill
1917 @item
1918 The rest of the index is often just a collection of where in the
1919 document certain words or phrases are being used.  This part is
1920 difficult to develop along with the document, because consistent entries
1921 for each occurrence are needed and are best selected when the document
1922 is ready.  @b{Ref@TeX{}} supports this with an @emph{index phrases file}
1923 which collects phrases and helps indexing the phrases globally.@refill
1924 @end enumerate
1926 Before you start, you need to make sure that @b{Ref@TeX{}} knows about
1927 the index style being used in the current document.  @b{Ref@TeX{}} has
1928 builtin support for the default @code{\index} and @code{\glossary}
1929 macros.  Other LaTeX packages, like the @file{multind} or @file{index}
1930 package, redefine the @code{\index} macro to have an additional
1931 argument, and @b{Ref@TeX{}} needs to be configured for those.  A
1932 sufficiently new version of AUCTeX (9.10c or later) will do this
1933 automatically.  If you really don't use AUCTeX (you should!), this
1934 configuration needs to be done by hand with the menu (@code{Ref->Index
1935 Style}), or globally for all your documents with@refill
1937 @lisp
1938 (setq reftex-index-macros '(multind))     @r{or}
1939 (setq reftex-index-macros '(index))
1940 @end lisp
1942 @menu
1943 * Creating Index Entries::           Macros and completion of entries.
1944 * The Index Phrases File::           A special file for global indexing.
1945 * Displaying and Editing the Index:: The index editor.
1946 * Builtin Index Macros::             The index macros RefTeX knows about.
1947 * Defining Index Macros::                ... and macros it  doesn't.
1948 @end menu
1950 @node Creating Index Entries, The Index Phrases File, , Index Support
1951 @section Creating Index Entries
1952 @cindex Creating index entries
1953 @cindex Index entries, creating
1954 @kindex C-c <
1955 @findex reftex-index
1956 @kindex C-c /
1957 @findex reftex-index-selection-or-word
1959 In order to index the current selection or the word at the cursor press
1960 @kbd{C-c /} (@code{reftex-index-selection-or-word}).  This causes the
1961 selection or word @samp{@var{word}} to be replaced with
1962 @samp{\index@{@var{word}@}@var{word}}.  The macro which is used
1963 (@code{\index} by default) can be configured with the variable
1964 @code{reftex-index-default-macro}.  When the command is called with a
1965 prefix argument (@kbd{C-u C-c /}), you get a chance to edit the
1966 generated index entry.  Use this to change the case of the word or to
1967 make the entry a subentry, for example by entering
1968 @samp{main!sub!@var{word}}.  When called with two raw @kbd{C-u} prefixes
1969 (@kbd{C-u C-u C-c /}), you will be asked for the index macro as well.
1970 When there is nothing selected and no word at point, this command will
1971 just call @code{reftex-index}, described below.
1973 In order to create a general index entry, press @kbd{C-c <}
1974 (@code{reftex-index}).  @b{Ref@TeX{}} will prompt for one of the
1975 available index macros and for its arguments.  Completion will be
1976 available for the index entry and, if applicable, the index tag.  The
1977 index tag is a string identifying one of multiple indices.  With the
1978 @file{multind} and @file{index} packages, this tag is the first argument
1979 to the redefined @code{\index} macro.@refill
1981 @node The Index Phrases File, Displaying and Editing the Index, Creating Index Entries, Index Support
1982 @section The Index Phrases File
1983 @cindex Index phrase file
1984 @cindex Phrase file
1985 @kindex C-c |
1986 @findex reftex-index-visit-phrases-buffer
1987 @cindex Macro definition lines, in phrase buffer
1989 @b{Ref@TeX{}} maintains a file in which phrases can be collected for
1990 later indexing.  The file is located in the same directory as the master
1991 file of the document and has the extension @file{.rip} (@b{R}eftex
1992 @b{I}ndex @b{P}hrases).  You can create or visit the file with @kbd{C-c
1993 |} (@code{reftex-index-visit-phrases-buffer}).  If the file is empty it
1994 is initialized by inserting a file header which contains the definition
1995 of the available index macros.  This list is initialized from
1996 @code{reftex-index-macros} (@pxref{Defining Index Macros}).  You can
1997 edit the header as needed, but if you define new LaTeX indexing macros,
1998 don't forget to add them to @code{reftex-index-macros} as well.  Here is
1999 a phrase file header example:@refill
2001 @example
2002 % -*- mode: reftex-index-phrases -*-
2003 %                           Key   Macro Format       Repeat
2004 %----------------------------------------------------------
2005 >>>INDEX_MACRO_DEFINITION:   i    \index@{%s@}          t
2006 >>>INDEX_MACRO_DEFINITION:   I    \index*@{%s@}         nil
2007 >>>INDEX_MACRO_DEFINITION:   g    \glossary@{%s@}       t
2008 >>>INDEX_MACRO_DEFINITION:   n    \index*[name]@{%s@}   nil
2009 %----------------------------------------------------------
2010 @end example
2012 The macro definition lines consist of a unique letter identifying a
2013 macro, a format string and the @var{repeat} flag, all separated by
2014 @key{TAB}.  The format string shows how the macro is to be applied, the
2015 @samp{%s} will be replaced with the index entry.  The repeat flag
2016 indicates if @var{word} is indexed by the macro as
2017 @samp{\index@{@var{word}@}} (@var{repeat} = @code{nil}) or as
2018 @samp{\index@{@var{word}@}@var{word}} (@var{repeat} = @code{t}).  In the
2019 above example it is assumed that the macro @code{\index*@{@var{word}@}}
2020 already typesets its argument in the text, so that it is unnecessary to
2021 repeat @var{word} outside the macro.@refill
2023 @menu
2024 * Collecting Phrases::               Collecting from document or external.
2025 * Consistency Checks::               Check for duplicates etc.
2026 * Global Indexing::                  The interactive indexing process.
2027 @end menu
2029 @node Collecting Phrases, Consistency Checks, , The Index Phrases File
2030 @subsection Collecting Phrases
2031 @cindex Collecting index phrases
2032 @cindex Index phrases, collection
2033 @cindex Phrases, collecting
2035 Phrases for indexing can be collected while writing the document.  The
2036 command @kbd{C-c \} (@code{reftex-index-phrase-selection-or-word})
2037 copies the current selection (if active) or the word near point into the 
2038 phrases buffer.  It then selects this buffer, so that the phrase line
2039 can be edited.  To return to the LaTeX document, press @kbd{C-c C-c}
2040 (@code{reftex-index-phrases-save-and-return}).
2042 You can also prepare the list of index phrases in a different way and
2043 copy it into the phrases file.  For example you might want to start from 
2044 a word list of the document and remove all words which should not be
2045 indexed.
2047 The phrase lines in the phrase buffer must have a specific format.
2048 @b{Ref@TeX{}} will use font-lock to indicate if a line has the proper
2049 format.  A phrase line looks like this:
2051 @example
2052 [@var{key}] <TABs> @var{phrase} [<TABs> @var{arg}[&&@var{arg}]... [ || @var{arg}]...] 
2053 @end example
2055 @code{<TABs>} stands for white space containing at least one @key{TAB}.
2056 @var{key} must be at the start of the line and is the character
2057 identifying one of the macros defined in the file header.  It is
2058 optional - when omitted, the first macro definition line in the file
2059 will be used for this phrase.  The @var{phrase} is the phrase to be
2060 searched for when indexing.  It may contain several words separated by
2061 spaces.  By default the search phrase is also the text entered as
2062 argument of the index macro.  If you want the index entry to be
2063 different from the search phrase, enter another @key{TAB} and the index
2064 argument @var{arg}.  If you want to have each match produce several
2065 index entries, separate the different index arguments with @samp{ &&
2066 }@footnote{@samp{&&} with optional spaces, see
2067 @code{reftex-index-phrases-logical-and-regexp}.}.  If you want to be
2068 able to choose at each match between several different index arguments,
2069 separate them with @samp{ || }@footnote{@samp{||} with optional spaces,
2070 see @code{reftex-index-phrases-logical-or-regexp}.}.  Here is an
2071 example:@refill
2073 @example
2074 %--------------------------------------------------------------------
2075 I     Sun
2076 i     Planet         Planets
2077 i     Vega           Stars!Vega
2078       Jupiter        Planets!Jupiter
2079 i     Mars           Planets!Mars || Gods!Mars || Chocolate Bars!Mars
2080 i     Pluto          Planets!Pluto && Kuiper Belt Objects!Pluto
2081 @end example
2084 So @samp{Sun} will be indexed directly as @samp{\index*@{Sun@}}, while
2085 @samp{Planet} will be indexed as @samp{\index@{Planets@}Planet}.
2086 @samp{Vega} will be indexed as a subitem of @samp{Stars}.  The
2087 @samp{Jupiter} line will also use the @samp{i} macro as it was the first
2088 macro definition in the file header (see above example).  At each
2089 occurrence of @samp{Mars} you will be able choose between indexing it as
2090 a subitem of @samp{Planets}, @samp{Gods} or @samp{Chocolate Bars}.
2091 Finally, every occurrence of @samp{Pluto} will be indexed as
2092 @samp{\index@{Planets!Pluto@}\index@{Kuiper Belt Objects!Pluto@}Pluto}
2093 and will therefore create two different index entries.@refill
2095 @node Consistency Checks, Global Indexing, Collecting Phrases, The Index Phrases File
2096 @subsection Consistency Checks
2097 @cindex Index phrases, consistency checks
2098 @cindex Phrases, consistency checks
2099 @cindex Consistency check for index phrases
2101 @kindex C-c C-s
2102 Before indexing the phrases in the phrases buffer, they should be
2103 checked carefully for consistency.  A first step is to sort the phrases
2104 alphabetically - this is done with the command @kbd{C-c C-s}
2105 (@code{reftex-index-sort-phrases}).  It will sort all phrases in the
2106 buffer alphabetically by search phrase.  If you want to group certain
2107 phrases and only sort within the groups, insert empty lines between the
2108 groups.  Sorting will only change the sequence of phrases within each
2109 group (see the variable @code{reftex-index-phrases-sort-in-blocks}).@refill
2111 @kindex C-c C-i
2112 A useful command is @kbd{C-c C-i} (@code{reftex-index-phrases-info})
2113 which lists information about the phrase at point, including an example
2114 of how the index entry will look like and the number of expected matches
2115 in the document.@refill
2117 @kindex C-c C-t
2118 Another important check is to find out if there are double or
2119 overlapping entries in the buffer.  For example if you are first
2120 searching and indexing @samp{Mars} and then @samp{Planet Mars}, the
2121 second phrase will not match because of the index macro inserted before
2122 @samp{Mars} earlier.  The command @kbd{C-c C-t}
2123 (@code{reftex-index-find-next-conflict-phrase}) finds the next phrase in
2124 the buffer which is either duplicate or a subphrase of another phrase.
2125 In order to check the whole buffer like this, start at the beginning and
2126 execute this command repeatedly.@refill
2128 @node Global Indexing, , Consistency Checks, The Index Phrases File
2129 @subsection Global Indexing
2130 @cindex Global indexing
2131 @cindex Indexing, global
2132 @cindex Indexing, from @file{phrases} buffer
2134 Once the index phrases have been collected and organized, you are set
2135 for global indexing.  I recommend to do this only on an otherwise
2136 finished document.  Global indexing starts from the phrases buffer.
2137 There are several commands which start indexing: @kbd{C-c C-x} acts on
2138 the current phrase line, @kbd{C-c C-r} on all lines in the current
2139 region and @kbd{C-c C-a} on all phrase lines in the buffer.  It is
2140 probably good to do indexing in small chunks since your concentration
2141 may not last long enough to do everything in one go.@refill
2143 @b{Ref@TeX{}} will start at the first phrase line and search the phrase
2144 globally in the whole document.  At each match it will stop, compute the
2145 replacement string and offer you the following choices@footnote{Windows
2146 users: Restrict yourself to the described keys during indexing.  Pressing 
2147 @key{Help} at the indexing prompt can apparently hang Emacs.}:@refill
2149 @table @kbd
2150 @item y
2151 Replace this match with the proposed string.
2152 @item n
2153 Skip this match.
2154 @item !
2155 Replace this and all further matches in this file.
2156 @item q
2157 Skip this match, start with next file.
2158 @item Q
2159 Skip this match, start with next phrase.
2160 @item o
2161 Select a different indexing macro for this match.
2162 @item 1-9
2163 Select one of multiple index keys (those separated with @samp{||}).
2164 @item e
2165 Edit the replacement text.
2166 @item C-r
2167 Recursive edit.  Use @kbd{C-M-c} to return to the indexing process.
2168 @item s
2169 Save this buffer and ask again about the current match.
2170 @item S
2171 Save all document buffers and ask again about the current match.
2172 @item C-g
2173 Abort the indexing process.
2174 @end table
2176 The @samp{Find and Index in Document} menu in the phrases buffer also
2177 lists a few options for the indexing process.  The options have
2178 associated customization variables to set the defaults (@pxref{Options
2179 (Index Support)}).  Here is a short explanation of what the options do:
2181 @table @i
2182 @item Match Whole Words
2183 When searching for index phrases, make sure whole words are matched.
2184 This should probably always be on.
2185 @item Case Sensitive Search
2186 Search case sensitively for phrases.  I recommend to have this setting
2187 off, in order to match the capitalized words at the beginning of a
2188 sentence, and even typos.  You can always say @emph{no} at a match you
2189 do not like.
2190 @item Wrap Long Lines
2191 Inserting index macros increases the line length.  Turn this option on
2192 to allow @b{Ref@TeX{}} to wrap long lines.
2193 @item Skip Indexed Matches
2194 When this is on, @b{Ref@TeX{}} will at each match try to figure out if
2195 this match is already indexed.  A match is considered indexed if it is
2196 either the argument of an index macro, or if an index macro is directly
2197 (without whitespace separation) before or after the match.  Index macros
2198 are those configured in @code{reftex-index-macros}.  Intended for
2199 re-indexing a documents after changes have been made.@refill
2200 @end table
2202 Even though indexing should be the last thing you do to a document, you
2203 are bound to make changes afterwards.  Indexing then has to be applied
2204 to the changed regions.  The command
2205 @code{reftex-index-phrases-apply-to-region} is designed for this
2206 purpose.  When called from a LaTeX document with active region, it will
2207 apply @code{reftex-index-all-phrases} to the current region.@refill
2209 @node Displaying and Editing the Index, Builtin Index Macros, The Index Phrases File, Index Support
2210 @section Displaying and Editing the Index
2211 @cindex Displaying the Index
2212 @cindex Editing the Index
2213 @cindex Index entries, creating
2214 @cindex Index, displaying
2215 @cindex Index, editing
2216 @kindex C-c >
2217 @findex reftex-display-index
2219 In order to compile and display the index, press @kbd{C-c >}.  If the
2220 document uses multiple indices, @b{Ref@TeX{}} will ask you to select
2221 one.  Then, all index entries will be sorted alphabetically and
2222 displayed in a special buffer, the @file{*Index*} buffer.  From that
2223 buffer you can check and edit each entry.@refill
2225 The index can be restricted to the current section or the region.  Then
2226 only entries in that part of the document will go into the compiled
2227 index.  To restrict to the current section, use a numeric prefix
2228 @samp{2}, thus press @kbd{C-u 2 C-c >}.  To restrict to the current
2229 region, make the region active and use a numeric prefix @samp{3} (press
2230 @kbd{C-u 3 C-c >}).  From within the @file{*Index*} buffer the
2231 restriction can be moved from one section to the next by pressing the
2232 @kbd{<} and @kbd{>} keys.@refill
2234 One caveat: @b{Ref@TeX{}} finds the definition point of an index entry
2235 by searching near the buffer position where it had found to macro during
2236 scanning.  If you have several identical index entries in the same
2237 buffer and significant changes have shifted the entries around, you must
2238 rescan the buffer to ensure the correspondence between the
2239 @file{*Index*} buffer and the definition locations.  It is therefore
2240 advisable to rescan the document (with @kbd{r} or @kbd{C-u r})
2241 frequently while editing the index from the @file{*Index*}
2242 buffer.@refill
2244 @kindex ?
2245 Here is a list of special commands available in the @file{*Index*} buffer.  A
2246 summary of this information is always available by pressing
2247 @kbd{?}.@refill
2249 @table @kbd
2250 @tablesubheading{General}
2251 @item ?
2252 Display a summary of commands.
2254 @item 0-9, -
2255 Prefix argument.
2257 @tablesubheading{Moving around}
2258 @item ! A..Z
2259 Pressing any capital letter will jump to the corresponding section in
2260 the @file{*Index*} buffer.  The exclamation mark is special and jumps to 
2261 the first entries alphabetically sorted below @samp{A}.  These are
2262 usually non-alphanumeric characters.@refill
2263 @item n
2264 Go to next entry.@refill
2265 @item p
2266 Go to previous entry.@refill
2268 @tablesubheading{Access to document locations}
2269 @item @key{SPC}
2270 Show the place in the document where this index entry is defined.@refill 
2272 @item @key{TAB}
2273 Go to the definition of the current index entry in another
2274 window.@refill
2276 @item @key{RET}
2277 Go to the definition of the current index entry and hide the
2278 @file{*Index*} buffer window.@refill
2280 @item f
2281 @vindex reftex-index-follow-mode
2282 @vindex reftex-revisit-to-follow
2283 Toggle follow mode.  When follow mode is active, the other window will
2284 always show the location corresponding to the line in the @file{*Index*}
2285 buffer at point.  This is similar to pressing @key{SPC} after each
2286 cursor motion.  The default for this flag can be set with the variable
2287 @code{reftex-index-follow-mode}.  Note that only context in files
2288 already visited is shown.  @b{Ref@TeX{}} will not visit a file just for
2289 follow mode.  See, however, the variable
2290 @code{reftex-revisit-to-follow}.@refill
2292 @tablesubheading{Entry editing}
2293 @item e
2294 Edit the current index entry.  In the minibuffer, you can edit the
2295 index macro which defines this entry.@refill
2297 @item C-k
2298 Kill the index entry.  Currently not implemented because I don't know
2299 how to implement an @code{undo} function for this.@refill
2301 @item *
2302 Edit the @var{key} part of the entry.  This is the initial part of the
2303 entry which determines the location of the entry in the index.@refill
2305 @item |
2306 Edit the @var{attribute} part of the entry.  This is the part after the
2307 vertical bar.  With @code{MakeIndex}, this part is an encapsulating
2308 macro.  With @code{xindy}, it is called @emph{attribute} and is a
2309 property of the index entry that can lead to special formatting.  When
2310 called with @kbd{C-u} prefix, kill the entire @var{attribute}
2311 part.@refill
2313 @item @@
2314 Edit the @var{visual} part of the entry.  This is the part after the
2315 @samp{@@} which is used by @code{MakeIndex} to change the visual
2316 appearance of the entry in the index.  When called with @kbd{C-u}
2317 prefix, kill the entire @var{visual} part.@refill
2319 @item (
2320 Toggle the beginning of page range property @samp{|(} of the
2321 entry.@refill 
2323 @item )
2324 Toggle the end of page range property @samp{|)} of the entry.@refill 
2326 @item _
2327 Make the current entry a subentry.  This command will prompt for the
2328 superordinate entry and insert it.@refill
2330 @item ^
2331 Remove the highest superordinate entry.  If the current entry is a 
2332 subitem (@samp{aaa!bbb!ccc}), this function moves it up the hierarchy
2333 (@samp{bbb!ccc}).@refill 
2335 @tablesubheading{Exiting}
2336 @item q
2337 Hide the @file{*Index*} buffer.@refill
2339 @item k
2340 Kill the @file{*Index*} buffer.@refill
2342 @item C-c =
2343 Switch to the Table of Contents buffer of this document.@refill
2345 @tablesubheading{Controlling what gets displayed}
2346 @item c
2347 @vindex reftex-index-include-context
2348 Toggle the display of short context in the @file{*Index*} buffer.  The
2349 default for this flag can be set with the variable
2350 @code{reftex-index-include-context}.@refill
2352 @item @}
2353 Restrict the index to a single document section.  The corresponding
2354 section number will be displayed in the @code{R<>} indicator in the
2355 mode line and in the header of the @file{*Index*} buffer.@refill
2357 @item @{
2358 Widen the index to contain all entries of the document.@refill
2360 @item <
2361 When the index is currently restricted, move the restriction to the
2362 previous section.@refill
2364 @item >
2365 When the index is currently restricted, move the restriction to the
2366 next section.@refill
2368 @tablesubheading{Updating the buffer}
2369 @item g
2370 Rebuild the @file{*Index*} buffer.  This does @emph{not} rescan the
2371 document.  However, it sorts the entries again, so that edited entries
2372 will move to the correct position.@refill
2374 @item r
2375 @vindex reftex-enable-partial-scans
2376 Reparse the LaTeX document and rebuild the @file{*Index*} buffer.  When
2377 @code{reftex-enable-partial-scans} is non-nil, rescan only the file this
2378 location is defined in, not the entire document.@refill
2380 @item C-u r
2381 Reparse the @emph{entire} LaTeX document and rebuild the @file{*Index*}
2382 buffer.@refill
2384 @item s
2385 Switch to a different index (for documents with multiple
2386 indices).@refill 
2387 @end table
2390 @node Builtin Index Macros, Defining Index Macros, Displaying and Editing the Index, Index Support
2391 @section Builtin Index Macros
2392 @cindex Builtin index macros
2393 @cindex Index macros, builtin
2394 @vindex reftex-index-macros
2395 @cindex @code{multind}, LaTeX package
2396 @cindex @code{index}, LaTeX package
2397 @cindex LaTeX packages, @code{multind}
2398 @cindex LaTeX packages, @code{index}
2400 @b{Ref@TeX{}} by default recognizes the @code{\index} and
2401 @code{\glossary} macros which are defined in the LaTeX core.  It has
2402 also builtin support for the re-implementations of @code{\index}
2403 in the @file{multind} and @file{index} packages.  However, since
2404 the different definitions of the @code{\index} macro are incompatible,
2405 you will have to explicitly specify the index style used.
2406 @xref{Creating Index Entries}, for information on how to do that.
2408 @node Defining Index Macros, , Builtin Index Macros, Index Support
2409 @section Defining Index Macros
2410 @cindex  Defining Index Macros
2411 @cindex Index macros, defining
2412 @vindex reftex-index-macros
2414 When writing a document with an index you will probably define
2415 additional macros which make entries into the index.
2416 Let's look at an example.
2418 @example
2419 \newcommand@{\ix@}[1]@{#1\index@{#1@}@}
2420 \newcommand@{\nindex@}[1]@{\textit@{#1@}\index[name]@{#1@}@}
2421 \newcommand@{\astobj@}[1]@{\index@{Astronomical Objects!#1@}@}
2422 @end example
2424 The first macro @code{\ix} typesets its argument in the text and places
2425 it into the index.  The second macro @code{\nindex} typesets its
2426 argument in the text and places it into a separate index with the tag
2427 @samp{name}@footnote{We are using the syntax of the @file{index} package
2428 here.}.  The last macro also places its argument into the index, but as
2429 subitems under the main index entry @samp{Astronomical Objects}.  Here
2430 is how to make @b{Ref@TeX{}} recognize and correctly interpret these
2431 macros, first with Emacs Lisp.
2433 @lisp
2434 (setq reftex-index-macros
2435       '(("\\ix@{*@}" "idx" ?x "" nil nil)
2436         ("\\nindex@{*@}" "name" ?n "" nil nil)
2437         ("\\astobj@{*@}" "idx" ?o "Astronomical Objects!" nil t)))
2438 @end lisp
2440 Note that the index tag is @samp{idx} for the main index, and
2441 @samp{name} for the name index.  @samp{idx} and @samp{glo} are reserved
2442 for the default index and for the glossary.
2444 The character arguments @code{?x}, @code{?n}, and @code{?o} are for
2445 quick identification of these macros when @b{Ref@TeX{}} inserts new
2446 index entries with @code{reftex-index}.  These codes need to be
2447 unique. @code{?i}, @code{?I}, and @code{?g} are reserved for the
2448 @code{\index}, @code{\index*}, and @code{\glossary} macros,
2449 respectively. 
2451 The following string is empty unless your macro adds a superordinate
2452 entry to the index key - this is the case for the @code{\astobj} macro.
2454 The next entry can be a hook function to exclude certain matches, it
2455 almost always can be @code{nil}.
2457 The final element in the list indicates if the text being indexed needs
2458 to be repeated outside the macro.  For the normal index macros, this
2459 should be @code{t}.  Only if the macro typesets the entry in the text
2460 (like @code{\ix} and @code{\nindex} in the example do), this should be
2461 @code{nil}.
2463 To do the same thing with customize, you need to fill in the templates
2464 like this:
2466 @example
2467 Repeat:
2468 [INS] [DEL] List:
2469             Macro with args: \ix@{*@}
2470             Index Tag      : [Value Menu] String: idx
2471             Access Key     : x
2472             Key Prefix     : 
2473             Exclusion hook : nil
2474             Repeat Outside : [Toggle]  off (nil)
2475 [INS] [DEL] List:
2476             Macro with args: \nindex@{*@}
2477             Index Tag      : [Value Menu] String: name
2478             Access Key     : n
2479             Key Prefix     : 
2480             Exclusion hook : nil
2481             Repeat Outside : [Toggle]  off (nil)
2482 [INS] [DEL] List:
2483             Macro with args: \astobj@{*@}
2484             Index Tag      : [Value Menu] String: idx
2485             Access Key     : o
2486             Key Prefix     : Astronomical Objects!
2487             Exclusion hook : nil
2488             Repeat Outside : [Toggle]  on (non-nil)
2489 [INS]
2490 @end example
2492 With the macro @code{\ix} defined, you may want to change the default
2493 macro used for indexing a text phrase (@pxref{Creating Index Entries}).
2494 This would be done like this
2496 @lisp
2497 (setq reftex-index-default-macro '(?x "idx"))
2498 @end lisp
2500 which specifies that the macro identified with the character @code{?x} (the
2501 @code{\ix} macro) should be used for indexing phrases and words already
2502 in the buffer with @kbd{C-c /} (@code{reftex-index-selection-or-word}).
2503 The index tag is "idx".@refill
2505 @node Viewing Cross-References, RefTeXs Menu, Index Support, Top
2506 @chapter Viewing Cross--References
2507 @findex reftex-view-crossref
2508 @findex reftex-mouse-view-crossref
2509 @kindex C-c &
2510 @kindex S-mouse-2
2512 @b{Ref@TeX{}} can display cross--referencing information.  This means,
2513 if two document locations are linked, @b{Ref@TeX{}} can display the
2514 matching location(s) in another window.  The @code{\label} and @code{\ref}
2515 macros are one way of establishing such a link.  Also, a @code{\cite}
2516 macro is linked to the corresponding @code{\bibitem} macro or a BibTeX
2517 database entry.@refill
2519 The feature is invoked by pressing @kbd{C-c &}
2520 (@code{reftex-view-crossref}) while point is on the @var{key} argument
2521 of a macro involved in cross--referencing.  You can also click with
2522 @kbd{S-mouse-2} on the macro argument.  Here is what will happen for
2523 individual classes of macros:@refill
2525 @table @asis
2527 @item @code{\ref}
2528 @cindex @code{\ref}
2529 Display the corresponding label definition.  All usual
2530 variants@footnote{all macros that start with @samp{ref} or end with
2531 @samp{ref} or @samp{refrange}} of the @code{\ref} macro are active for
2532 cross--reference display.  This works also for labels defined in an
2533 external document when the current document refers to them through the
2534 @code{xr} interface (@pxref{xr (LaTeX package)}).@refill
2536 @item @code{\label}
2537 @cindex @code{\label}
2538 @vindex reftex-label-alist
2539 Display a document location which references this label.  Pressing
2540 @kbd{C-c &} several times moves through the entire document and finds
2541 all locations.  Not only the @code{\label} macro but also other macros
2542 with label arguments (as configured with @code{reftex-label-alist}) are
2543 active for cross--reference display.@refill
2545 @item @code{\cite}
2546 @cindex @code{\cite}
2547 Display the corresponding BibTeX database entry or @code{\bibitem}.
2548 All usual variants@footnote{all macros that either start or end with
2549 @samp{cite}} of the @code{\cite} macro are active for cross--reference
2550 display.@refill
2552 @item @code{\bibitem}
2553 @cindex @code{\bibitem}
2554 Display a document location which cites this article. Pressing
2555 @kbd{C-c &} several times moves through the entire document and finds
2556 all locations.@refill
2558 @item BibTeX
2559 @cindex BibTeX buffer, viewing cite locations from
2560 @cindex Viewing cite locations from BibTeX buffer
2561 @kbd{C-c &} is also active in BibTeX buffers.  All locations in a
2562 document where the database entry at point is cited will be displayed.
2563 On first use, @b{Ref@TeX{}} will prompt for a buffer which belongs to
2564 the document you want to search.  Subsequent calls will use the same
2565 document, until you break this link with a prefix argument to @kbd{C-c
2566 &}.@refill
2568 @item @code{\index}
2569 @cindex @code{\index}
2570 Display other locations in the document which are marked by an index
2571 macro with the same key argument.  Along with the standard @code{\index}
2572 and @code{\glossary} macros, all macros configured in
2573 @code{reftex-index-macros} will be recognized.@refill
2574 @end table
2576 @vindex reftex-view-crossref-extra
2577 While the display of cross referencing information for the above
2578 mentioned macros is hard--coded, you can configure additional relations
2579 in the variable @code{reftex-view-crossref-extra}.
2580     
2581 @iftex
2582 @chapter All the Rest
2583 @end iftex
2585 @node RefTeXs Menu, Key Bindings, Viewing Cross-References, Top
2586 @section @b{Ref@TeX{}}'s Menu
2587 @cindex RefTeXs Menu
2588 @cindex Menu, in the menu bar
2590 @b{Ref@TeX{}} installs a @code{Ref} menu in the menu bar on systems
2591 which support this.  From this menu you can access all of
2592 @b{Ref@TeX{}}'s commands and a few of its options.  There is also a
2593 @code{Customize} submenu which can be used to access @b{Ref@TeX{}}'s
2594 entire set of options.@refill
2596 @node Key Bindings, Faces, RefTeXs Menu, Top
2597 @section Default Key Bindings
2598 @cindex Key Bindings, summary
2600 Here is a summary of the available key bindings.
2602 @kindex C-c =
2603 @kindex C-c -
2604 @kindex C-c (
2605 @kindex C-c )
2606 @kindex C-c [
2607 @kindex C-c &
2608 @kindex S-mouse-2
2609 @kindex C-c /
2610 @kindex C-c \
2611 @kindex C-c |
2612 @kindex C-c <
2613 @kindex C-c >
2614 @example
2615 @kbd{C-c =}      @code{reftex-toc}
2616 @kbd{C-c -}      @code{reftex-toc-recenter}
2617 @kbd{C-c (}      @code{reftex-label}
2618 @kbd{C-c )}      @code{reftex-reference}
2619 @kbd{C-c [}      @code{reftex-citation}
2620 @kbd{C-c &}      @code{reftex-view-crossref}
2621 @kbd{S-mouse-2}  @code{reftex-mouse-view-crossref}
2622 @kbd{C-c /}      @code{reftex-index-selection-or-word}
2623 @kbd{C-c \}      @code{reftex-index-phrase-selection-or-word}
2624 @kbd{C-c |}      @code{reftex-index-visit-phrases-buffer}
2625 @kbd{C-c <}      @code{reftex-index}
2626 @kbd{C-c >}      @code{reftex-display-index}
2627 @end example
2629 Note that the @kbd{S-mouse-2} binding is only provided if this key is
2630 not already used by some other package.  @b{Ref@TeX{}} will not override an
2631 existing binding to @kbd{S-mouse-2}.@refill
2633 Personally, I also bind some functions in the users @kbd{C-c} map for
2634 easier access.@refill
2636 @c FIXME: Do we need bindings for the Index macros here as well?
2637 @c C-c i   C-c I or so????
2638 @c How about key bindings for reftex-reset-mode and reftex-parse-document?
2639 @kindex C-c t
2640 @kindex C-c l
2641 @kindex C-c r
2642 @kindex C-c c
2643 @kindex C-c v
2644 @kindex C-c s
2645 @kindex C-c g
2646 @example
2647 @kbd{C-c t}    @code{reftex-toc}
2648 @kbd{C-c l}    @code{reftex-label}
2649 @kbd{C-c r}    @code{reftex-reference}
2650 @kbd{C-c c}    @code{reftex-citation}
2651 @kbd{C-c v}    @code{reftex-view-crossref}
2652 @kbd{C-c s}    @code{reftex-search-document}
2653 @kbd{C-c g}    @code{reftex-grep-document}
2654 @end example
2656 @noindent These keys are reserved for the user, so I cannot bind them by
2657 default.  If you want to have these key bindings available, set in your
2658 @file{.emacs} file:
2660 @vindex reftex-extra-bindings
2661 @lisp
2662 (setq reftex-extra-bindings t)
2663 @end lisp
2665 @vindex reftex-load-hook
2666 Changing and adding to @b{Ref@TeX{}}'s key bindings is best done in the hook
2667 @code{reftex-load-hook}.  For information on the keymaps
2668 which should be used to add keys, see @ref{Keymaps and Hooks}.
2670 @node Faces, AUCTeX, Key Bindings, Top
2671 @section Faces
2672 @cindex Faces
2674 @b{Ref@TeX{}} uses faces when available to structure the selection and
2675 table of contents buffers.  It does not create its own faces, but uses
2676 the ones defined in @file{font-lock.el}.  Therefore, @b{Ref@TeX{}} will
2677 use faces only when @code{font-lock} is loaded.  This seems to be
2678 reasonable because people who like faces will very likely have it
2679 loaded.  If you wish to turn off fontification or change the involved
2680 faces, see @ref{Options (Fontification)}.@refill
2682 @node Multifile Documents, Language Support, AUCTeX, Top
2683 @section Multifile Documents
2684 @cindex Multifile documents
2685 @cindex Documents, spread over files
2687 The following is relevant when working with documents spread over many
2688 files:@refill
2690 @itemize @bullet
2691 @item
2692 @b{Ref@TeX{}} has full support for multifile documents.  You can edit parts of
2693 several (multifile) documents at the same time without conflicts.
2694 @b{Ref@TeX{}} provides functions to run @code{grep}, @code{search} and
2695 @code{query-replace} on all files which are part of a multifile
2696 document.@refill
2698 @item
2699 @vindex tex-main-file
2700 @vindex TeX-master
2701 All files belonging to a multifile document should define a File
2702 Variable (@code{TeX-master} for AUCTeX or @code{tex-main-file} for the
2703 standard Emacs LaTeX mode) containing the name of the master file.  For
2704 example, to set the file variable @code{TeX-master}, include something
2705 like the following at the end of each TeX file:@refill
2707 @example
2708 %%% Local Variables: ***
2709 %%% mode:latex ***
2710 %%% TeX-master: "thesis.tex"  ***
2711 %%% End: ***
2712 @end example
2714 AUCTeX with the setting
2716 @lisp
2717 (setq-default TeX-master nil)
2718 @end lisp
2720 will actually ask you for each new file about the master file and insert
2721 this comment automatically.  For more details see the documentation of
2722 the AUCTeX (@pxref{Multifile,,,auctex, The AUC TeX User Manual}), the
2723 documentation about the Emacs (La)TeX mode (@pxref{TeX Print,,,emacs,
2724 The GNU Emacs Manual}) and the Emacs documentation on File Variables
2725 (@pxref{File Variables,,,emacs, The GNU Emacs Manual}).@refill
2727 @item
2728 The context of a label definition must be found in the same file as the
2729 label itself in order to be processed correctly by @b{Ref@TeX{}}.  The only
2730 exception is that section labels referring to a section statement
2731 outside the current file can still use that section title as
2732 context.@refill
2733 @end itemize
2735 @node Language Support, Finding Files, Multifile Documents, Top
2736 @section Language Support
2737 @cindex Language support
2739 Some parts of @b{Ref@TeX{}} are language dependent.  The default
2740 settings work well for English.  If you are writing in a different
2741 language, the following hints may be useful:
2743 @itemize @bullet
2744 @item
2745 @vindex reftex-derive-label-parameters
2746 @vindex reftex-abbrev-parameters
2747 The mechanism to derive a label from context includes the abbreviation
2748 of words and omission of unimportant words.  These mechanisms may have
2749 to be changed for other languages.  See the variables
2750 @code{reftex-derive-label-parameters} and @code{reftex-abbrev-parameters}.
2752 @item
2753 @vindex reftex-translate-to-ascii-function
2754 @vindex reftex-label-illegal-re
2755 Also, when a label is derived from context, @b{Ref@TeX{}} clears the
2756 context string from non-ASCII characters in order to make a legal label.
2757 If there should ever be a version of @TeX{} which allows extended
2758 characters @emph{in labels}, then we will have to look at the
2759 variables @code{reftex-translate-to-ascii-function} and
2760 @code{reftex-label-illegal-re}.
2762 @item
2763 When a label is referenced, @b{Ref@TeX{}} looks at the word before point
2764 to guess which label type is required.  These @emph{magic words} are
2765 different in every language.  For an example of how to add magic words,
2766 see @ref{Adding Magic Words}.
2768 @vindex reftex-multiref-punctuation
2769 @vindex reftex-cite-punctuation
2770 @item 
2771 @b{Ref@TeX{}} inserts ``punctuation'' for multiple references and
2772 for the author list in citations.  Some of this may be language
2773 dependent.  See the variables @code{reftex-multiref-punctuation} and
2774 @code{reftex-cite-punctuation}.
2775 @end itemize
2777 @node Finding Files, Optimizations, Language Support, Top
2778 @section Finding Files
2779 @cindex Finding files
2781 In order to find files included in a document via @code{\input} or
2782 @code{\include}, @b{Ref@TeX{}} searches all directories specified in the
2783 environment variable @code{TEXINPUTS}.  Similarly, it will search the
2784 path specified in the variables @code{BIBINPUTS} and @code{TEXBIB} for
2785 BibTeX database files.
2787 When searching, @b{Ref@TeX{}} will also expand recursive path
2788 definitions (directories ending in @samp{//} or @samp{!!}).  But it will
2789 only search and expand directories @emph{explicitly} given in these
2790 variables. This may cause problems under the following circumstances:
2792 @itemize @bullet
2793 @item
2794 Most TeX system have a default search path for both TeX files and BibTeX
2795 files which is defined in some setup file.  Usually this default path is
2796 for system files which @b{Ref@TeX{}} does not need to see.  But if your
2797 document needs TeX files or BibTeX database files in a directory only
2798 given in the default search path, @b{Ref@TeX{}} will fail to find them.
2799 @item
2800 Some TeX systems do not use environment variables at all in order to
2801 specify the search path.  Both default and user search path are then
2802 defined in setup files.
2803 @end itemize
2805 @noindent
2806 There are three ways to solve this problem:
2808 @itemize @bullet
2809 @item
2810 Specify all relevant directories explicitly in the environment
2811 variables.  If for some reason you don't want to mess with the default
2812 variables @code{TEXINPUTS} and @code{BIBINPUTS}, define your own
2813 variables and configure @b{Ref@TeX{}} to use them instead:
2815 @lisp
2816 (setq reftex-texpath-environment-variables '("MYTEXINPUTS"))
2817 (setq reftex-bibpath-environment-variables '("MYBIBINPUTS"))
2818 @end lisp
2820 @item
2821 Specify the full search path directly in @b{Ref@TeX{}}'s variables.
2823 @lisp
2824 (setq reftex-texpath-environment-variables 
2825       '("./inp:/home/cd/tex//:/usr/local/tex//"))
2826 (setq reftex-bibpath-environment-variables
2827       '("/home/cd/tex/lit/"))
2828 @end lisp
2830 @item
2831 Some TeX systems provide stand--alone programs to do the file search just
2832 like TeX and BibTeX.  E.g. Thomas Esser's @code{teTeX} uses the
2833 @code{kpathsearch} library which provides the command @code{kpsewhich}
2834 to search for files.  @b{Ref@TeX{}} can be configured to use this
2835 program.  Note that the exact syntax of the @code{kpsewhich}
2836 command depends upon the version of that program.
2838 @lisp
2839 (setq reftex-use-external-file-finders t)
2840 (setq reftex-external-file-finders
2841       '(("tex" . "kpsewhich -format=.tex %f")
2842         ("bib" . "kpsewhich -format=.bib %f")))      
2843 @end lisp
2844 @end itemize
2846 @cindex Noweb files
2847 @vindex reftex-file-extensions
2848 @vindex TeX-file-extensions
2849 Some people like to use RefTeX with noweb files, which usually have the
2850 extension @file{.nw}.  In order to deal with such files, the new
2851 extension must be added to the list of valid extensions in the variable
2852 @code{reftex-file-extensions}.  When working with AUCTeX as major mode,
2853 the new extension must also be known to AUCTeX via the variable
2854 @code{TeX-file-extension}.  For example:
2856 @lisp
2857 (setq reftex-file-extensions 
2858       '(("nw" "tex" ".tex" ".ltx") ("bib" ".bib")))
2859 (setq TeX-file-extensions 
2860       '( "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo"))
2861 @end lisp
2863 @node Optimizations, Problems and Work-Arounds, Finding Files, Top
2864 @section Optimizations
2865 @cindex Optimizations
2867 @b{Note added 2002.  Computers have gotten a lot faster, so most of the
2868 optimizations discussed below will not be necessary on new machines.  I
2869 am leaving this stuff in the manual for people who want to write thick
2870 books, where some of it still might be useful.}
2872 Implementing the principle of least surprises, the default settings of
2873 @b{Ref@TeX{}} ensure a safe ride for beginners and casual users.  However,
2874 when using @b{Ref@TeX{}} for a large project and/or on a small computer,
2875 there are ways to improve speed or memory usage.@refill
2877 @itemize @bullet
2878 @item
2879 @b{Removing Lookup Buffers}@*
2880 @cindex Removing lookup buffers
2881 @b{Ref@TeX{}} will load other parts of a multifile document as well as BibTeX
2882 database files for lookup purposes.  These buffers are kept, so that
2883 subsequent use of the same files is fast.  If you can't afford keeping
2884 these buffers around, and if you can live with a speed penalty, try
2886 @vindex reftex-keep-temporary-buffers
2887 @lisp
2888 (setq reftex-keep-temporary-buffers nil)
2889 @end lisp
2891 @item
2892 @b{Partial Document Scans}@*
2893 @cindex Partial documents scans
2894 @cindex Document scanning, partial
2895 A @kbd{C-u} prefix on the major @b{Ref@TeX{}} commands @code{reftex-label}
2896 (@kbd{C-u C-c (}), @code{reftex-reference} (@kbd{C-u C-c )}),
2897 @code{reftex-citation} (@kbd{C-u C-c [}), @code{reftex-toc} (@kbd{C-u C-c
2898 =}), and @code{reftex-view-crossref} (@kbd{C-u C-c &}) initiates
2899 re-parsing of the entire document in order to update the parsing
2900 information.  For a large document this can be unnecessary, in
2901 particular if only one file has changed.  @b{Ref@TeX{}} can be configured
2902 to do partial scans instead of full ones.  @kbd{C-u} re-parsing then
2903 does apply only to the current buffer and files included from it.
2904 Likewise, the @kbd{r} key in both the label selection buffer and the
2905 table-of-contents buffer will only prompt scanning of the file in which
2906 the label or section macro near the cursor was defined.  Re-parsing of
2907 the entire document is still available by using @kbd{C-u C-u} as a
2908 prefix, or the capital @kbd{R} key in the menus.  To use this feature,
2909 try@refill
2911 @vindex reftex-enable-partial-scans
2912 @lisp
2913 (setq reftex-enable-partial-scans t)
2914 @end lisp
2916 @item
2917 @b{Saving Parser Information}@*
2918 @cindex Saving parser information
2919 @cindex Parse information, saving to a file
2920 @vindex reftex-parse-file-extension
2921 Even with partial scans enabled, @b{Ref@TeX{}} still has to make one full
2922 scan, when you start working with a document.  To avoid this, parsing
2923 information can be stored in a file.  The file @file{MASTER.rel} is used
2924 for storing information about a document with master file
2925 @file{MASTER.tex}.  It is written automatically when you kill a buffer
2926 in @code{reftex-mode} or when you exit Emacs.  The information is
2927 restored when you begin working with a document in a new editing
2928 session.  To use this feature, put into @file{.emacs}:@refill
2930 @vindex reftex-save-parse-info
2931 @lisp
2932 (setq reftex-save-parse-info t)
2933 @end lisp
2935 @item
2936 @b{Automatic Document Scans}@*
2937 @cindex Automatic document scans
2938 @cindex Document scanning, automatic
2939 At rare occasions, @b{Ref@TeX{}} will automatically rescan a part of the
2940 document.  If this gets into your way, it can be turned off with
2942 @vindex reftex-allow-automatic-rescan
2943 @lisp
2944 (setq reftex-allow-automatic-rescan nil)
2945 @end lisp
2947 @b{Ref@TeX{}} will then occasionally annotate new labels in the selection
2948 buffer, saying that their position in the label list in uncertain.  A
2949 manual document scan will fix this.@refill
2951 @item
2952 @b{Multiple Selection Buffers}@*
2953 @cindex Multiple selection buffers
2954 @cindex Selection buffers, multiple
2955 Normally, the selection buffer @file{*RefTeX Select*} is re-created for
2956 every selection process.  In documents with very many labels this can
2957 take several seconds.  @b{Ref@TeX{}} provides an option to create a
2958 separate selection buffer for each label type and to keep this buffer
2959 from one selection to the next.  These buffers are updated automatically
2960 only when a new label has been added in the buffers category with
2961 @code{reftex-label}.  Updating the buffer takes as long as recreating it
2962 - so the time saving is limited to cases where no new labels of that
2963 category have been added.  To turn on this feature, use@refill
2965 @vindex reftex-use-multiple-selection-buffers
2966 @lisp
2967 (setq reftex-use-multiple-selection-buffers t)
2968 @end lisp
2970 @noindent
2971 @cindex Selection buffers, updating
2972 You can also inhibit the automatic updating entirely.  Then the
2973 selection buffer will always pop up very fast, but may not contain the
2974 most recently defined labels.  You can always update the buffer by hand,
2975 with the @kbd{g} key.  To get this behavior, use instead@refill
2977 @vindex reftex-auto-update-selection-buffers
2978 @lisp
2979 (setq reftex-use-multiple-selection-buffers t
2980       reftex-auto-update-selection-buffers nil)
2981 @end lisp
2982 @end itemize
2984 @need 2000
2985 @noindent
2986 @b{As a summary}, here are the settings I recommend for heavy use of
2987 @b{Ref@TeX{}} with large documents:
2989 @lisp
2990 @group
2991 (setq reftex-enable-partial-scans t
2992       reftex-save-parse-info t
2993       reftex-use-multiple-selection-buffers t)
2994 @end group
2995 @end lisp
2997 @node AUCTeX, Multifile Documents, Faces, Top
2998 @section @w{AUC @TeX{}}
2999 @cindex @code{AUCTeX}, Emacs package
3000 @cindex Emacs packages, @code{AUCTeX}
3002 AUCTeX is without doubt the best major mode for editing TeX and LaTeX
3003 files with Emacs (@pxref{Top,AUCTeX,,auctex, The AUCTeX User Manual}).
3004 If AUCTeX is not part of your Emacs distribution, you can get
3005 it@footnote{XEmacs 21.x users may want to install the corresponding
3006 XEmacs package.} by ftp from the
3007 @uref{http://www.sunsite.auc.dk/auctex/,AUCTeX distribution site}.
3009 @menu
3010 * AUCTeX-RefTeX Interface::          How both packages work together
3011 * Style Files::                      AUCTeX's style files can support RefTeX
3012 * Bib-Cite::                         Hypertext reading of a document
3013 @end menu
3015 @node AUCTeX-RefTeX Interface, Style Files, , AUCTeX
3016 @subsection The AUC@TeX{}-@b{Ref@TeX{}} Interface
3018 @b{Ref@TeX{}} contains code to interface with AUCTeX.  When this
3019 interface is turned on, both packages will interact closely.  Instead of
3020 using @b{Ref@TeX{}}'s commands directly, you can then also use them
3021 indirectly as part of the AUCTeX
3022 environment@footnote{@b{Ref@TeX{}} 4.0 and AUCTeX 9.10c will be
3023 needed for all of this to work.  Parts of it work also with earlier
3024 versions.}.  The interface is turned on with@refill
3026 @lisp
3027 (setq reftex-plug-into-AUCTeX t)
3028 @end lisp
3030 If you need finer control about which parts of the interface are used
3031 and which not, read the docstring of the variable
3032 @code{reftex-plug-into-AUCTeX} or customize it with @kbd{M-x
3033 customize-variable @key{RET} reftex-plug-into-AUCTeX @key{RET}}.
3035 The following list describes the individual parts of the interface.
3037 @itemize @bullet
3038 @item
3039 @findex reftex-label
3040 @vindex LaTeX-label-function, @r{AUCTeX}
3041 @kindex C-c C-e
3042 @kindex C-c C-s
3043 @findex LaTeX-section, @r{AUCTeX}
3044 @findex TeX-insert-macro, @r{AUCTeX}
3045 @b{AUCTeX calls @code{reftex-label} to insert labels}@*
3046 When a new section is created with @kbd{C-c C-s}, or a new environment
3047 is inserted with @kbd{C-c C-e}, AUCTeX normally prompts for a label to
3048 go with it.  With the interface, @code{reftex-label} is called instead.
3049 For example, if you type @kbd{C-c C-e equation @key{RET}}, AUCTeX and
3050 @b{Ref@TeX{}} will insert
3052 @example
3053 \begin@{equation@}
3054 \label@{eq:1@}
3056 \end@{equation@}
3057 @end example
3059 @noindent
3060 without further prompts.
3062 Similarly, when you type @kbd{C-c C-s section @key{RET}}, @b{Ref@TeX{}}
3063 will offer its default label which is derived from the section title.
3065 @item
3066 @b{AUCTeX tells @b{Ref@TeX{}} about new sections}@*
3067 When creating a new section with @kbd{C-c C-s}, @b{Ref@TeX{}} will not
3068 have to rescan the buffer in order to see it.@refill
3070 @item
3071 @findex reftex-arg-label
3072 @findex TeX-arg-label, @r{AUCTeX function}
3073 @findex reftex-arg-ref
3074 @findex TeX-arg-ref, @r{AUCTeX function}
3075 @findex reftex-arg-cite
3076 @findex TeX-arg-cite, @r{AUCTeX function}
3077 @findex reftex-arg-index
3078 @findex TeX-arg-index, @r{AUCTeX function}
3079 @findex TeX-insert-macro, @r{AUCTeX function}
3080 @kindex C-c @key{RET}
3081 @b{@b{Ref@TeX{}} supplies macro arguments}@* When you insert a macro
3082 interactively with @kbd{C-c @key{RET}}, AUCTeX normally prompts for
3083 macro arguments.  Internally, it uses the functions
3084 @code{TeX-arg-label}, @code{TeX-arg-cite}, and @code{TeX-arg-index} to
3085 prompt for arguments which are labels, citation keys and index entries.
3086 The interface takes over these functions@footnote{@code{fset} is used to
3087 do this, which is not reversible.  However, @b{Ref@TeX{}} implements the
3088 old functionality when you later decide to turn off the interface.} and
3089 supplies the macro arguments with @b{Ref@TeX{}'s} mechanisms.  For
3090 example, when you type @kbd{C-c @key{RET} ref @key{RET}}, @b{Ref@TeX{}}
3091 will supply its label selection process (@pxref{Referencing
3092 Labels}).@refill
3094 @item
3095 @b{@b{Ref@TeX{}} tells AUCTeX about new labels, citation-- and index keys}@*
3096 @b{Ref@TeX{}} will add all newly created labels to AUCTeX's completion list.
3097 @end itemize
3099 @node Style Files, Bib-Cite, AUCTeX-RefTeX Interface, AUCTeX
3100 @subsection Style Files
3101 @cindex Style files, AUCTeX
3102 @findex TeX-add-style-hook, @r{AUCTeX}
3103 Style files are Emacs Lisp files which are evaluated by AUCTeX in
3104 association with the @code{\documentclass} and @code{\usepackage}
3105 commands of a document (@pxref{Style Files,,,auctex}). Support for
3106 @b{Ref@TeX{}} in such a style file is useful when the LaTeX style
3107 defines macros or environments connected with labels, citations, or the
3108 index.  Many style files (e.g. @file{amsmath.el} or @file{natbib.el})
3109 distributed with AUCTeX already support @b{Ref@TeX{}} in this
3110 way.@refill
3112 Before calling a @b{Ref@TeX{}} function, the style hook should always
3113 test for the availability of the function, so that the style file will
3114 also work for people who do not use @b{Ref@TeX{}}. @refill
3116 Additions made with style files in the way described below remain local
3117 to the current document.  For example, if one package uses AMSTeX, the
3118 style file will make @b{Ref@TeX{}} switch over to @code{\eqref}, but
3119 this will not affect other documents.@refill
3121 @findex reftex-add-label-environments
3122 @findex reftex-add-to-label-alist
3123 A style hook may contain calls to
3124 @code{reftex-add-label-environments}@footnote{This used to be the
3125 function @code{reftex-add-to-label-alist} which is still available as an
3126 alias for compatibility.}  which defines additions to
3127 @code{reftex-label-alist}.  The argument taken by this function must have
3128 the same format as @code{reftex-label-alist}.  The @file{amsmath.el}
3129 style file of AUCTeX for example contains the following:@refill
3131 @lisp
3132 @group
3133 (TeX-add-style-hook "amsmath"
3134    (lambda ()
3135      (if (fboundp 'reftex-add-label-environments)
3136          (reftex-add-label-environments '(AMSTeX)))))
3137 @end group
3138 @end lisp
3140 @noindent
3141 @findex LaTeX-add-environments, @r{AUCTeX}
3142 while a package @code{myprop} defining a @code{proposition} environment
3143 with @code{\newtheorem} might use@refill
3145 @lisp
3146 @group
3147 (TeX-add-style-hook "myprop"
3148    (lambda ()
3149      (LaTeX-add-environments '("proposition" LaTeX-env-label))
3150      (if (fboundp 'reftex-add-label-environments)
3151          (reftex-add-label-environments
3152           '(("proposition" ?p "prop:" "~\\ref@{%s@}" t
3153                            ("Proposition" "Prop.") -3))))))
3154 @end group
3155 @end lisp
3157 @findex reftex-set-cite-format
3158 Similarly, a style hook may contain a call to
3159 @code{reftex-set-cite-format} to set the citation format.  The style
3160 file @file{natbib.el} for the Natbib citation style does switch
3161 @b{Ref@TeX{}}'s citation format like this:@refill
3163 @lisp
3164 (TeX-add-style-hook "natbib"
3165    (lambda ()
3166      (if (fboundp 'reftex-set-cite-format)
3167          (reftex-set-cite-format 'natbib))))
3168 @end lisp
3170 @findex reftex-add-index-macros 
3171 The hook may contain a call to @code{reftex-add-index-macros} to
3172 define additional @code{\index}-like macros.  The argument must have
3173 the same format as @code{reftex-index-macros}.  It may be a symbol, to
3174 trigger support for one of the builtin index packages.  For example,
3175 the style @file{multind.el} contains
3177 @lisp
3178 (TeX-add-style-hook "multind"
3179   (lambda ()
3180     (and (fboundp 'reftex-add-index-macros)
3181          (reftex-add-index-macros '(multind)))))
3182 @end lisp
3184 If you have your own package @file{myindex} which defines the
3185 following macros to be used with the LaTeX @file{index.sty} file
3186 @example
3187 \newcommand@{\molec@}[1]@{#1\index@{Molecules!#1@}@}
3188 \newcommand@{\aindex@}[1]@{#1\index[author]@{#1@}
3189 @end example
3191 you could write this in the style file @file{myindex.el}:
3193 @lisp
3194 (TeX-add-style-hook "myindex"
3195    (lambda ()
3196      (TeX-add-symbols
3197       '("molec" TeX-arg-index)
3198       '("aindex" TeX-arg-index))
3199      (if (fboundp 'reftex-add-index-macros)
3200          (reftex-add-index-macros
3201           '(("molec@{*@}" "idx" ?m "Molecules!" nil nil)
3202             ("aindex@{*@}" "author" ?a "" nil nil))))))
3203 @end lisp
3205 @findex reftex-add-section-levels
3206 Finally the hook may contain a call to @code{reftex-add-section-levels}
3207 to define additional section statements.  For example, the FoilTeX class
3208 has just two headers, @code{\foilhead} and @code{\rotatefoilhead}.  Here
3209 is a style file @file{foils.el} that will inform @b{Ref@TeX{}} about these:
3211 @lisp
3212 (TeX-add-style-hook "foils"
3213    (lambda ()
3214      (if (fboundp 'reftex-add-section-levels)
3215          (reftex-add-section-levels '(("foilhead" . 3)
3216                                       ("rotatefoilhead" . 3))))))
3217 @end lisp
3219 @node Bib-Cite, , Style Files, AUCTeX
3220 @subsection Bib-Cite
3221 @cindex @code{bib-cite}, Emacs package
3222 @cindex Emacs packages, @code{bib-cite}
3224 Once you have written a document with labels, references and citations,
3225 it can be nice to read it like a hypertext document.  @b{Ref@TeX{}} has
3226 support for that: @code{reftex-view-crossref} (bound to @kbd{C-c
3227 &}), @code{reftex-mouse-view-crossref} (bound to @kbd{S-mouse-2}), and
3228 @code{reftex-search-document}.  A somewhat fancier interface with mouse
3229 highlighting is provided (among other things) by Peter S. Galbraith's
3230 @file{bib-cite.el}.  There is some overlap in the functionalities of
3231 Bib-cite and @b{Ref@TeX{}}.  Bib-cite.el comes bundled with
3232 AUCTeX.@refill
3234 Bib-cite version 3.06 and later can be configured so that bib-cite's
3235 mouse functions use @b{Ref@TeX{}} for displaying references and citations.
3236 This can be useful in particular when working with the LaTeX @code{xr}
3237 package or with an explicit @code{thebibliography} environment (rather
3238 than BibTeX).  Bib-cite cannot handle those, but @b{Ref@TeX{}} does.  To
3239 make use of this feature, try@refill
3241 @vindex bib-cite-use-reftex-view-crossref
3242 @lisp
3243 (setq bib-cite-use-reftex-view-crossref t)
3244 @end lisp
3246 @page
3247 @node Problems and Work-Arounds, Imprint, Optimizations, Top
3248 @section Problems and Work-arounds
3249 @cindex Problems and work-arounds
3251 @itemize @bullet
3252 @item
3253 @b{LaTeX commands}@*
3254 @cindex LaTeX commands, not found
3255 @code{\input}, @code{\include}, and @code{\section} (etc.) statements
3256 have to be first on a line (except for white space).@refill
3258 @item
3259 @b{Commented regions}@*
3260 @cindex Labels, commented out
3261 @b{Ref@TeX{}} sees also labels in regions commented out and will refuse to
3262 make duplicates of such labels.  This is considered to be a feature.@refill
3264 @item
3265 @b{Wrong section numbers}@*
3266 @cindex Section numbers, wrong
3267 @vindex reftex-enable-partial-scans
3268 When using partial scans (@code{reftex-enable-partial-scans}), the section
3269 numbers in the table of contents may eventually become wrong.  A full
3270 scan will fix this.@refill
3272 @item
3273 @b{Local settings}@*
3274 @cindex Settings, local
3275 @findex reftex-add-label-environments
3276 @findex reftex-set-cite-format
3277 @findex reftex-add-section-levels
3278 The label environment definitions in @code{reftex-label-alist} are
3279 global and apply to all documents.  If you need to make definitions
3280 local to a document, because they would interfere with settings in other
3281 documents, you should use AUCTeX and set up style files with calls to
3282 @code{reftex-add-label-environments}, @code{reftex-set-cite-format},
3283 @code{reftex-add-index-macros}, and @code{reftex-add-section-levels}.
3284 Settings made with these functions remain local to the current
3285 document. @xref{AUCTeX}.@refill
3287 @item
3288 @b{Funny display in selection buffer}@*
3289 @cindex @code{x-symbol}, Emacs package
3290 @cindex Emacs packages, @code{x-symbol}
3291 @cindex @code{isotex}, Emacs package
3292 @cindex Emacs packages, @code{isotex}
3293 @cindex @code{iso-cvt}, Emacs package
3294 @cindex Emacs packages, @code{iso-cvt}
3295 When using packages which make the buffer representation of a file
3296 different from its disk representation (e.g. x-symbol, isotex,
3297 iso-cvt) you may find that @b{Ref@TeX{}}'s parsing information sometimes
3298 reflects the disk state of a file.  This happens only in @emph{unvisited}
3299 parts of a multifile document, because @b{Ref@TeX{}} visits these files
3300 literally for speed reasons.  Then both short context and section
3301 headings may look different from what you usually see on your screen.
3302 In rare cases @code{reftex-toc} may have problems to jump to an affected
3303 section heading.  There are three possible ways to deal with
3304 this:@refill 
3305 @itemize @minus
3306 @item
3307 @vindex reftex-keep-temporary-buffers
3308 @code{(setq reftex-keep-temporary-buffers t)}@*
3309 This implies that @b{Ref@TeX{}} will load all parts of a multifile
3310 document into Emacs (i.e. there won't be any temporary buffers).@refill
3311 @item
3312 @vindex reftex-initialize-temporary-buffers
3313 @code{(setq reftex-initialize-temporary-buffers t)}@*
3314 This means full initialization of temporary buffers.  It involves
3315 a penalty when the same unvisited file is used for lookup often.@refill
3316 @item
3317 Set @code{reftex-initialize-temporary-buffers} to a list of hook
3318 functions doing a minimal initialization.@refill
3319 @end itemize
3320 @vindex reftex-refontify-context
3321 See also the variable @code{reftex-refontify-context}.
3323 @item
3324 @b{Labels as arguments to \begin}@*
3325 @cindex @code{pf}, LaTeX package
3326 @cindex LaTeX packages, @code{pf}
3327 Some packages use an additional argument to a @code{\begin} macro
3328 to specify a label.  E.g. Lamport's @file{pf.sty} uses both
3329 @example
3330 \step@{@var{label}@}@{@var{claim}@}   and      \begin@{step+@}@{@var{label}@}
3331                                   @var{claim}
3332                                \end@{step+@}
3333 @end example
3335 @noindent
3336 We need to trick @b{Ref@TeX{}} into swallowing this:
3338 @lisp
3339 @group
3340 ;; Configuration for Lamport's pf.sty
3341 (setq reftex-label-alist
3342   '(("\\step@{*@}@{@}"       ?p "st:" "~\\stepref@{%s@}" 2 ("Step" "St."))
3343     ("\\begin@{step+@}@{*@}" ?p "st:" "~\\stepref@{%s@}" 1000)))
3344 @end group
3345 @end lisp
3347 @noindent
3348 The first line is just a normal configuration for a macro.  For the
3349 @code{step+} environment we actually tell @b{Ref@TeX{}} to look for the
3350 @emph{macro} @samp{\begin@{step+@}} and interpret the @emph{first}
3351 argument (which really is a second argument to the macro @code{\begin})
3352 as a label of type @code{?p}.  Argument count for this macro starts only
3353 after the @samp{@{step+@}}, also when specifying how to get
3354 context.@refill 
3356 @item
3357 @b{Idle timers in XEmacs}@*
3358 @cindex Idle timer restart
3359 @vindex reftex-use-itimer-in-xemacs
3360 In XEmacs, idle timer restart does not work reliably after fast
3361 keystrokes.  Therefore @b{Ref@TeX{}} currently uses the post command
3362 hook to start the timer used for automatic crossref information.  When
3363 this bug gets fixed, a real idle timer can be requested with
3364 @lisp
3365 (setq reftex-use-itimer-in-xemacs t)
3366 @end lisp
3368 @item
3369 @b{Viper mode}@*
3370 @cindex Viper mode
3371 @cindex Key bindings, problems with Viper mode
3372 @findex viper-harness-minor-mode
3373 With @i{Viper} mode prior to Vipers version 3.01, you need to protect
3374 @b{Ref@TeX{}}'s keymaps with@refill
3376 @lisp
3377 (viper-harness-minor-mode "reftex")
3378 @end lisp
3380 @end itemize
3382 @page
3383 @node Imprint, Commands, Problems and Work-Arounds, Top
3384 @section Imprint
3385 @cindex Imprint
3386 @cindex Maintainer
3387 @cindex Acknowledgments
3388 @cindex Thanks
3389 @cindex Bug reports
3390 @cindex @code{http}, @b{Ref@TeX{}} home page
3391 @cindex @code{ftp}, @b{Ref@TeX{}} site
3393 @b{Ref@TeX{}} was written by @i{@value{Carsten Dominik}}
3394 @email{dominik@@science.uva.nl}, with contributions by @i{Stephen
3395 Eglen}.  @b{Ref@TeX{}} is currently maintained by @refill
3397 @noindent
3398 @value{Carsten Dominik} @email{dominik@@science.uva.nl}
3400 If you have questions about @b{Ref@TeX{}}, there are several Usenet
3401 groups which have competent readers: @code{comp.emacs},
3402 @code{gnu.emacs.help}, @code{comp.emacs.xemacs}, @code{comp.text.tex}.
3403 You can also write directly to the maintainer.
3405 If you find a bug in @b{Ref@TeX{}} or its documentation, or if you want
3406 to contribute code or ideas, please
3407 @uref{mailto:dominik@@science.uva.nl,contact the maintainer}.  Remember
3408 to provide all necessary information such as version numbers of Emacs
3409 and @b{Ref@TeX{}}, and the relevant part of your configuration in
3410 @file{.emacs}.  When reporting a bug which throws an exception, please
3411 include a backtrace if you know how to produce one.
3413 @b{Ref@TeX{}} is bundled and pre-installed with Emacs since version 20.2.
3414 It was also bundled and pre-installed with XEmacs 19.16--20.x.  XEmacs
3415 21.x users want to install the corresponding plugin package which is
3416 available from the XEmacs @code{ftp} site.  See the XEmacs 21.x
3417 documentation on package installation for details.@refill
3419 Users of earlier Emacs distributions (including Emacs 19) can get a
3420 @b{Ref@TeX{}} distribution from the
3421 @uref{http://www.strw.leidenuniv.nl/~dominik/Tools/,maintainers
3422 webpage}.  Note that the Emacs 19 version supports many but not all
3423 features described in this manual.@refill
3425 Thanks to the people on the Net who have used @b{Ref@TeX{}} and helped
3426 developing it with their reports.  In particular thanks to @i{Fran
3427 Burstall, Alastair Burt, Lars Clausen, Soren Dayton, Stephen Eglen, Karl
3428 Eichwalder, Erik Frik, Erik Frisk, Peter Galbraith, Kai Grossjohann,
3429 Frank Harrell, Stephan Heuel, Alan Ho, Lute Kamstra, Dieter Kraft,
3430 Adrian Lanz, Rory Molinari, Stefan Monnier, Laurent Mugnier, Sudeep
3431 Kumar Palat, Daniel Polani, Alan Shutko, Robin Socha, Richard Stanton,
3432 Allan Strand, Jan Vroonhof, Christoph Wedler, Alan Williams, Roland
3433 Winkler, Eli Zaretskii}.@refill
3435 The @code{view-crossref} feature was inspired by @i{Peter Galbraith's}
3436 @file{bib-cite.el}.@refill
3438 Finally thanks to @i{Uwe Bolick} who first got me (some years ago) into
3439 supporting LaTeX labels and references with an editor (which was
3440 MicroEmacs at the time).@refill
3442 @node Commands, Options, Imprint, Top
3443 @chapter Commands
3444 @cindex Commands, list of
3446 Here is a summary of @b{Ref@TeX{}}'s commands which can be executed from
3447 LaTeX files.  Command which are executed from the special buffers are
3448 not described here.  All commands are available from the @code{Ref}
3449 menu.  See @xref{Key Bindings}.
3451 @deffn Command reftex-toc
3452 Show the table of contents for the current document.  When called with
3453 one ore two @kbd{C-u} prefixes, rescan the document first.@refill
3454 @end deffn
3456 @deffn Command reftex-label
3457 Insert a unique label.  With one or two @kbd{C-u} prefixes, enforce
3458 document rescan first.
3459 @end deffn
3461 @deffn Command reftex-reference
3462 Start a selection process to select a label, and insert a reference to
3463 it.  With one or two @kbd{C-u} prefixes, enforce document rescan first.
3464 @end deffn
3466 @deffn Command reftex-citation
3467 Make a citation using BibTeX database files.  After prompting for a regular
3468 expression, scans the buffers with BibTeX entries (taken from the
3469 @code{\bibliography} command or a @code{thebibliography} environment)
3470 and offers the matching entries for selection.  The selected entry is
3471 formatted according to @code{reftex-cite-format} and inserted into the
3472 buffer.@refill @*
3473 When called with one or two @kbd{C-u} prefixes, first rescans the
3474 document.  When called with a numeric prefix, make that many citations.
3475 When called with point inside the braces of a @code{\cite} command, it
3476 will add another key, ignoring the value of
3477 @code{reftex-cite-format}.@refill @* 
3478 The regular expression uses an expanded syntax: @samp{&&} is interpreted
3479 as @code{and}.  Thus, @samp{aaaa&&bbb} matches entries which contain
3480 both @samp{aaaa} and @samp{bbb}.  While entering the regexp, completion
3481 on knows citation keys is possible.  @samp{=} is a good regular
3482 expression to match all entries in all files.@refill
3483 @end deffn
3485 @deffn Command reftex-index
3486 Query for an index macro and insert it along with its arguments.  The
3487 index macros available are those defined in @code{reftex-index-macro} or
3488 by a call to @code{reftex-add-index-macros}, typically from an AUCTeX
3489 style file.  @b{Ref@TeX{}} provides completion for the index tag and the
3490 index key, and will prompt for other arguments.@refill
3491 @end deffn
3493 @deffn Command reftex-index-selection-or-word
3494 Put current selection or the word near point into the default index
3495 macro.  This uses the information in @code{reftex-index-default-macro}
3496 to make an index entry.  The phrase indexed is the current selection or
3497 the word near point.  When called with one @kbd{C-u} prefix, let the
3498 user have a chance to edit the index entry.  When called with 2
3499 @kbd{C-u} as prefix, also ask for the index macro and other stuff.  When
3500 called inside TeX math mode as determined by the @file{texmathp.el}
3501 library which is part of AUCTeX, the string is first processed with the
3502 @code{reftex-index-math-format}, which see.@refill
3503 @end deffn
3505 @deffn Command reftex-index-phrase-selection-or-word
3506 Add current selection or the word at point to the phrases buffer.
3507 When you are in transient-mark-mode and the region is active, the
3508 selection will be used - otherwise the word at point.
3509 You get a chance to edit the entry in the phrases buffer - to save the
3510 buffer and return to the LaTeX document, finish with @kbd{C-c C-c}.
3511 @end deffn
3513 @deffn Command reftex-index-visit-phrases-buffer
3514 Switch to the phrases buffer, initialize if empty.
3515 @end deffn
3517 @deffn Command reftex-index-phrases-apply-to-region
3518 Index all index phrases in the current region.
3519 This works exactly like global indexing from the index phrases buffer,
3520 but operation is restricted to the current region.
3521 @end deffn
3523 @deffn Command reftex-display-index
3524 Display a buffer with an index compiled from the current document.
3525 When the document has multiple indices, first prompts for the correct one.
3526 When index support is turned off, offer to turn it on.
3527 With one or two @kbd{C-u} prefixes, rescan document first.
3528 With prefix 2, restrict index to current document section.
3529 With prefix 3, restrict index to active region.@refill
3530 @end deffn
3532 @deffn Command reftex-view-crossref
3533 View cross reference of macro at point.  Point must be on the @var{key}
3534 argument.  Works with the macros @code{\label}, @code{\ref},
3535 @code{\cite}, @code{\bibitem}, @code{\index} and many derivatives of
3536 these.  Where it makes sense, subsequent calls show additional
3537 locations.  See also the variable @code{reftex-view-crossref-extra} and
3538 the command @code{reftex-view-crossref-from-bibtex}.  With one or two
3539 @kbd{C-u} prefixes, enforce rescanning of the document.  With argument
3540 2, select the window showing the cross reference.
3541 @end deffn
3543 @deffn Command reftex-view-crossref-from-bibtex
3544 View location in a LaTeX document which cites the BibTeX entry at point.
3545 Since BibTeX files can be used by many LaTeX documents, this function
3546 prompts upon first use for a buffer in @b{Ref@TeX{}} mode.  To reset this
3547 link to a document, call the function with a prefix arg.  Calling
3548 this function several times find successive citation locations.
3549 @end deffn
3551 @deffn Command reftex-create-tags-file
3552 Create TAGS file by running @code{etags} on the current document.  The
3553 TAGS file is also immediately visited with
3554 @code{visit-tags-table}.@refill
3555 @end deffn
3557 @deffn Command reftex-grep-document
3558 Run grep query through all files related to this document.
3559 With prefix arg, force to rescan document.
3560 No active TAGS table is required.@refill
3561 @end deffn
3563 @deffn Command reftex-search-document
3564 Regexp search through all files of the current document.
3565 Starts always in the master file.  Stops when a match is found.
3566 No active TAGS table is required.@refill
3567 @end deffn
3569 @deffn Command reftex-query-replace-document
3570 Run a query-replace-regexp of @var{from} with @var{to} over the entire
3571 document.  With prefix arg, replace only word-delimited matches.  No
3572 active TAGS table is required.@refill
3573 @end deffn
3575 @deffn Command reftex-goto-label
3576 Prompt for a label (with completion) and jump to the location of this
3577 label.  Optional prefix argument @var{other-window} goes to the label in
3578 another window.
3579 @end deffn
3582 @deffn Command reftex-change-label
3583 Query replace @var{from} with @var{to} in all @code{\label} and
3584 @code{\ref} commands.  Works on the entire multifile document.  No
3585 active TAGS table is required.@refill
3586 @end deffn
3588 @deffn Command reftex-renumber-simple-labels
3589 Renumber all simple labels in the document to make them sequentially.
3590 Simple labels are the ones created by RefTeX, consisting only of the
3591 prefix and a number.  After the command completes, all these labels will
3592 have sequential numbers throughout the document.  Any references to the
3593 labels will be changed as well.  For this, @b{Ref@TeX{}} looks at the
3594 arguments of any macros which either start or end with the string
3595 @samp{ref}.  This command should be used with care, in particular in
3596 multifile documents.  You should not use it if another document refers
3597 to this one with the @code{xr} package.@refill
3598 @end deffn
3600 @deffn Command reftex-find-duplicate-labels
3601 Produce a list of all duplicate labels in the document.@refill
3602 @end deffn
3604 @deffn Command reftex-customize
3605 Run the customize browser on the @b{Ref@TeX{}} group.
3606 @end deffn
3607 @deffn Command reftex-show-commentary
3608 Show the commentary section from @file{reftex.el}.
3609 @end deffn
3610 @deffn Command reftex-info
3611 Run info on the top @b{Ref@TeX{}} node.
3612 @end deffn
3613 @deffn Command reftex-parse-document
3614 Parse the entire document in order to update the parsing information.
3615 @end deffn
3616 @deffn Command reftex-reset-mode
3617 Enforce rebuilding of several internal lists and variables.  Also
3618 removes the parse file associated with the current document.
3619 @end deffn
3621 @node Options, Keymaps and Hooks, Commands, Top
3622 @chapter Options, Keymaps, Hooks
3623 @cindex Options, list of
3625 Here is a complete list of @b{Ref@TeX{}}'s configuration variables.  All
3626 variables have customize support - so if you are not familiar with Emacs
3627 Lisp (and even if you are) you might find it more comfortable to use
3628 @code{customize} to look at and change these variables. @kbd{M-x
3629 reftex-customize} will get you there.@refill
3631 @menu
3632 * Options (Table of Contents)::
3633 * Options (Defining Label Environments)::
3634 * Options (Creating Labels)::
3635 * Options (Referencing Labels)::
3636 * Options (Creating Citations)::
3637 * Options (Index Support)::
3638 * Options (Viewing Cross-References)::
3639 * Options (Finding Files)::
3640 * Options (Optimizations)::
3641 * Options (Fontification)::
3642 * Options (Misc)::
3643 @end menu
3645 @node Options (Table of Contents), Options (Defining Label Environments), ,  Options
3646 @section Table of Contents
3647 @cindex Options, table of contents
3648 @cindex Table of contents, options
3650 @defopt reftex-include-file-commands
3651 List of LaTeX commands which input another file.
3652 The file name is expected after the command, either in braces or separated
3653 by whitespace.
3654 @end defopt
3656 @defopt reftex-max-section-depth
3657 Maximum depth of section levels in document structure.
3658 Standard LaTeX needs 7, default is 12.
3659 @end defopt
3661 @defopt reftex-section-levels
3662 Commands and levels used for defining sections in the document.  The
3663 @code{car} of each cons cell is the name of the section macro.  The
3664 @code{cdr} is a number indicating its level.  A negative level means the
3665 same as the positive value, but the section will never get a
3666 number.  The @code{cdr} may also be a function which then has to return
3667 the level.@refill
3668 @end defopt
3670 @defopt reftex-toc-max-level
3671 The maximum level of toc entries which will be included in the TOC.
3672 Section headings with a bigger level will be ignored.  In RefTeX,
3673 chapters are level 1, sections level 2 etc.  This variable can be
3674 changed from within the @file{*toc*} buffer with the @kbd{t} key.@refill
3675 @end defopt
3677 @defopt reftex-part-resets-chapter
3678 Non-@code{nil} means, @code{\part} is like any other sectioning command.
3679 This means, part numbers will be included in the numbering of chapters, and
3680 chapter counters will be reset for each part.
3681 When @code{nil} (the default), parts are special, do not reset the
3682 chapter counter and also do not show up in chapter numbers.
3683 @end defopt
3685 @defopt reftex-auto-recenter-toc
3686 Non-@code{nil} means, initially turn automatic recentering of toc on.
3687 When active, the @file{*TOC*} buffer will always show the section you
3688 are currently working in.  Recentering happens whenever Emacs is idle
3689 for more than `reftex-idle-time' seconds.
3690 This feature can be turned on and off from the menu 
3691 (Ref->Options).
3692 @end defopt
3694 @defopt reftex-toc-split-windows-horizontally
3695 Non-@code{nil} means, create TOC window by splitting window
3696 horizontally.  The default is to split vertically.
3697 @end defopt
3699 @defopt reftex-toc-split-windows-horizontally-fraction
3700 Fraction of the horizontal width of the frame to be used for TOC window.
3701 Only relevant when @code{reftex-toc-split-windows-horizontally} is
3702 non-@code{nil}.
3703 @end defopt
3705 @defopt reftex-toc-keep-other-windows
3706 Non-@code{nil} means, split the selected window to display the
3707 @file{*toc*} buffer.  This helps to keep the window configuration, but
3708 makes the @file{*toc*} small.  When @code{nil}, all other windows except
3709 the selected one will be deleted, so that the @file{*toc*} window fills
3710 half the frame.@refill
3711 @end defopt
3713 @defopt reftex-toc-include-file-boundaries
3714 Non-@code{nil} means, include file boundaries in @file{*toc*} buffer.
3715 This flag can be toggled from within the @file{*toc*} buffer with the
3716 @kbd{i} key.@refill
3717 @end defopt
3719 @defopt reftex-toc-include-labels
3720 Non-@code{nil} means, include labels in @file{*toc*} buffer.  This flag
3721 can be toggled from within the @file{*toc*} buffer with the @kbd{l}
3722 key.@refill
3723 @end defopt
3725 @defopt reftex-toc-include-index-entries
3726 Non-@code{nil} means, include index entries in @file{*toc*} buffer.
3727 This flag can be toggled from within the @file{*toc*} buffer with the
3728 @kbd{i} key.
3729 @end defopt
3731 @defopt reftex-toc-include-context
3732 Non-@code{nil} means, include context with labels in the @file{*toc*}
3733 buffer.  Context will only be shown if the labels are visible as well.
3734 This flag can be toggled from within the @file{*toc*} buffer with the
3735 @kbd{c} key.@refill
3736 @end defopt
3738 @defopt reftex-toc-follow-mode
3739 Non-@code{nil} means, point in @file{*toc*} buffer (the
3740 table-of-contents buffer) will cause other window to follow.  The other
3741 window will show the corresponding part of the document.  This flag can
3742 be toggled from within the @file{*toc*} buffer with the @kbd{f}
3743 key.@refill
3744 @end defopt
3746 @deffn {Normal Hook} reftex-toc-mode-hook
3747 Normal hook which is run when a @file{*toc*} buffer is
3748 created.@refill
3749 @end deffn
3751 @deffn Keymap reftex-toc-map
3752 The keymap which is active in the @file{*toc*} buffer.
3753 (@pxref{Table of Contents}).@refill
3754 @end deffn
3756 @node Options (Defining Label Environments), Options (Creating Labels), Options (Table of Contents), Options
3757 @section Defining Label Environments
3758 @cindex Options, defining label environments
3759 @cindex Defining label environments, options
3761 @defopt reftex-default-label-alist-entries
3762 Default label alist specifications.  It is a list of symbols with
3763 associations in the constant @code{reftex-label-alist-builtin}.
3764 @code{LaTeX} should always be the last entry.@refill
3765 @end defopt
3767 @defopt reftex-label-alist
3768 Set this variable to define additions and changes to the defaults in
3769 @code{reftex-default-label-alist-entries}.  The only things you
3770 @emph{must not} change is that @code{?s} is the type indicator for
3771 section labels, and @key{SPC} for the @code{any} label type.  These are
3772 hard-coded at other places in the code.@refill
3774 The value of the variable must be a list of items.  Each item is a list
3775 itself and has the following structure:
3777 @example
3778  (@var{env-or-macro}  @var{type-key}  @var{label-prefix}  @var{reference-format}
3779     @var{context-method}  (@var{magic-word} ... )  @var{toc-level})
3780 @end example
3782 Each list entry describes either an environment carrying a counter for
3783 use with @code{\label} and @code{\ref}, or a LaTeX macro defining a
3784 label as (or inside) one of its arguments.  The elements of each list
3785 entry are:@refill
3787 @table @asis
3788 @item @var{env-or-macro}
3789 Name of the environment (like @samp{table}) or macro (like
3790 @samp{\myfig}).  For macros, indicate the arguments, as in
3791 @samp{\myfig[]@{@}@{@}@{*@}@{@}}.  Use square brackets for optional
3792 arguments, a star to mark the label argument, if any.  The macro does
3793 not have to have a label argument - you could also use
3794 @samp{\label@{...@}} inside one of its arguments.@refill
3796 Special names: @code{section} for section labels, @code{any} to define a
3797 group which contains all labels.@refill
3799 This may also be a function to do local parsing and identify point to be
3800 in a non-standard label environment.  The function must take an
3801 argument @var{bound} and limit backward searches to this value.  It
3802 should return either nil or a cons cell @code{(@var{function}
3803 . @var{position})} with the function symbol and the position where the
3804 special environment starts.  See the Info documentation for an
3805 example.@refill
3807 Finally this may also be @code{nil} if the entry is only meant to change
3808 some settings associated with the type indicator character (see
3809 below).@refill
3811 @item @var{type-key}
3812 Type indicator character, like @code{?t}, must be a printable ASCII
3813 character.  The type indicator is a single character which defines a
3814 label type.  Any label inside the environment or macro is assumed to
3815 belong to this type.  The same character may occur several times in this
3816 list, to cover cases in which different environments carry the same
3817 label type (like @code{equation} and @code{eqnarray}).  If the type
3818 indicator is @code{nil} and the macro has a label argument @samp{@{*@}},
3819 the macro defines neutral labels just like @code{\label}.  In this case
3820 the reminder of this entry is ignored.@refill
3822 @item @var{label-prefix}
3823 Label prefix string, like @samp{tab:}.  The prefix is a short string
3824 used as the start of a label.  It may be the empty string.  The prefix
3825 may contain the following @samp{%} escapes:@refill
3827 @example
3828 %f Current file name, directory and extension stripped.
3829 %F Current file name relative to master file directory.
3830 %u User login name, on systems which support this.
3831 %S A section prefix derived with variable @code{reftex-section-prefixes}.
3832 @end example
3834 @noindent
3835 Example: In a file @file{intro.tex}, @samp{eq:%f:} will become
3836 @samp{eq:intro:}.@refill
3838 @item @var{reference-format}
3839 Format string for reference insert in buffer.  @samp{%s} will be
3840 replaced by the label.  When the format starts with @samp{~}, this
3841 @samp{~} will only be inserted when the character before point is
3842 @emph{not} a whitespace.@refill
3844 @item @var{context-method}
3845 Indication on how to find the short context.
3846 @itemize @minus
3847 @item
3848 If @code{nil}, use the text following the @samp{\label@{...@}} macro.@refill
3849 @item
3850 If @code{t}, use
3851 @itemize @minus
3852 @item
3853 the section heading for section labels.
3854 @item
3855 text following the @samp{\begin@{...@}} statement of environments (not
3856 a good choice for environments like eqnarray or enumerate, where one has
3857 several labels in a single environment).@refill
3858 @item
3859 text after the macro name (starting with the first arg) for
3860 macros.@refill
3861 @end itemize
3862 @item
3863 If an integer, use the nth argument of the macro.  As a special case,
3864 1000 means to get text after the last macro argument.@refill
3865 @item
3866 If a string, use as regexp to search @emph{backward} from the label.
3867 Context is then the text following the end of the match.  E.g. putting
3868 this to @samp{\\caption[[@{]} will use the caption in a figure or table
3869 environment.  @samp{\\begin@{eqnarray@}\|\\\\} works for
3870 eqnarrays.@refill
3871 @item
3872 If any of @code{caption}, @code{item}, @code{eqnarray-like},
3873 @code{alignat-like}, this symbol will internally be translated into an
3874 appropriate regexp (see also the variable
3875 @code{reftex-default-context-regexps}).@refill
3876 @item
3877 If a function, call this function with the name of the environment/macro
3878 as argument.  On call, point will be just after the @code{\label} macro.
3879 The function is expected to return a suitable context string.  It should
3880 throw an exception (error) when failing to find context.  As an example,
3881 here is a function returning the 10 chars following the label macro as
3882 context:@refill
3884 @example
3885 (defun my-context-function (env-or-mac)
3886    (if (> (point-max) (+ 10 (point)))
3887        (buffer-substring (point) (+ 10 (point)))
3888      (error "Buffer too small")))
3889 @end example
3890 @end itemize
3892 Label context is used in two ways by @b{Ref@TeX{}}: For display in the label
3893 menu, and to derive a label string.  If you want to use a different
3894 method for each of these, specify them as a dotted pair.
3895 E.g. @code{(nil . t)} uses the text after the label (@code{nil}) for
3896 display, and text from the default position (@code{t}) to derive a label
3897 string.  This is actually used for section labels.@refill
3899 @item @var{magic-word-list}
3900 List of magic words which identify a reference to be of this type.  If
3901 the word before point is equal to one of these words when calling
3902 @code{reftex-reference}, the label list offered will be automatically
3903 restricted to labels of the correct type.  If the first element of this
3904 word--list is the symbol `regexp', the strings are interpreted as regular
3905 expressions.@refill
3907 @item @var{toc-level}
3908 The integer level at which this environment should be added to the table
3909 of contents.  See also @code{reftex-section-levels}.  A positive value
3910 will number the entries mixed with the sectioning commands of the same
3911 level.  A negative value will make unnumbered entries.  Useful only for
3912 theorem-like environments which structure the document.  Will be ignored
3913 for macros.  When omitted or @code{nil}, no TOC entries will be
3914 made.@refill
3915 @end table
3917 If the type indicator characters of two or more entries are the same,
3918 @b{Ref@TeX{}} will use@refill
3919 @itemize @minus
3920 @item
3921 the first non-@code{nil} format and prefix
3922 @item
3923 the magic words of all involved entries.
3924 @end itemize
3926 Any list entry may also be a symbol.  If that has an association in
3927 @code{reftex-label-alist-builtin}, the @code{cddr} of that association is
3928 spliced into the list.  However, builtin defaults should normally be set
3929 with the variable @code{reftex-default-label-alist-entries}.@refill
3930 @end defopt
3932 @defopt reftex-section-prefixes
3933 Prefixes for section labels.  When the label prefix given in an entry in
3934 @code{reftex-label-alist} contains @samp{%S}, this list is used to
3935 determine the correct prefix string depending on the current section
3936 level.  The list is an alist, with each entry of the form
3937 @w{@code{(@var{key} . @var{prefix})}}. Possible keys are sectioning macro
3938 names like @samp{chapter}, integer section levels (as given in
3939 @code{reftex-section-levels}), and @code{t} for the default.
3940 @end defopt
3942 @defopt reftex-default-context-regexps
3943 Alist with default regular expressions for finding context.  The emacs
3944 lisp form @w{@code{(format regexp (regexp-quote environment))}} is used
3945 to calculate the final regular expression - so @samp{%s} will be
3946 replaced with the environment or macro.@refill
3947 @end defopt
3949 @node Options (Creating Labels), Options (Referencing Labels), Options (Defining Label Environments), Options
3950 @section Creating Labels
3951 @cindex Options, creating labels
3952 @cindex Creating labels, options
3954 @defopt reftex-insert-label-flags
3955 Flags governing label insertion.  The value has the form
3957 @example
3958 (@var{derive} @var{prompt})
3959 @end example
3961 If @var{derive}is @code{t}, @b{Ref@TeX{}} will try to derive a sensible
3962 label from context.  A section label for example will be derived from
3963 the section heading.  The conversion of the context to a legal label is
3964 governed by the specifications given in
3965 @code{reftex-derive-label-parameters}.  If @var{derive} is @code{nil},
3966 the default label will consist of the prefix and a unique number, like
3967 @samp{eq:23}.@refill
3969 If @var{prompt} is @code{t}, the user will be prompted for a label
3970 string.  When @var{prompt} is @code{nil}, the default label will be
3971 inserted without query.@refill
3973 So the combination of @var{derive} and @var{prompt} controls label
3974 insertion.  Here is a table describing all four possibilities:@refill
3976 @example
3977 @group
3978 @var{derive} @var{prompt} @var{action}
3979 -----------------------------------------------------------
3980 nil    nil    @r{Insert simple label, like @samp{eq:22} or @samp{sec:13}. No query.}
3981 nil    t      @r{Prompt for label.}
3982 t      nil    @r{Derive a label from context and insert. No query.}
3983 t      t      @r{Derive a label from context, prompt for confirmation.}
3984 @end group
3985 @end example
3987 Each flag may be set to @code{t}, @code{nil}, or a string of label type
3988 letters indicating the label types for which it should be true.  Thus,
3989 the combination may be set differently for each label type.  The default
3990 settings @samp{"s"} and @samp{"sft"} mean: Derive section labels from
3991 headings (with confirmation).  Prompt for figure and table labels.  Use
3992 simple labels without confirmation for everything else.@refill
3994 The available label types are: @code{s} (section), @code{f} (figure),
3995 @code{t} (table), @code{i} (item), @code{e} (equation), @code{n}
3996 (footnote), @code{N} (endnote) plus any definitions in
3997 @code{reftex-label-alist}.@refill
3998 @end defopt
4000 @deffn Hook reftex-format-label-function
4001 If non-@code{nil}, should be a function which produces the string to
4002 insert as a label definition.  The function will be called with two
4003 arguments, the @var{label} and the @var{default-format} (usually
4004 @samp{\label@{%s@}}).  It should return the string to insert into the
4005 buffer.@refill
4006 @end deffn
4008 @deffn Hook reftex-string-to-label-function
4009 Function to turn an arbitrary string into a legal label.
4010 @b{Ref@TeX{}}'s default function uses the variable
4011 @code{reftex-derive-label-parameters}.@refill
4012 @end deffn
4014 @deffn Hook reftex-translate-to-ascii-function
4015 Filter function which will process a context string before it is used to
4016 derive a label from it.  The intended application is to convert ISO or
4017 Mule characters into something legal in labels.  The default function
4018 @code{reftex-latin1-to-ascii} removes the accents from Latin-1
4019 characters.  X-Symbol (>=2.6) sets this variable to the much more
4020 general @code{x-symbol-translate-to-ascii}.@refill
4021 @end deffn
4023 @defopt reftex-derive-label-parameters
4024 Parameters for converting a string into a label.  This variable is a
4025 list of the following items:@refill
4026 @table @asis
4027 @item @var{nwords}
4028 Number of words to use.
4029 @item @var{maxchar}
4030 Maximum number of characters in a label string.
4031 @item @var{illegal}
4032 @code{nil}: Throw away any words containing characters illegal in labels.@*
4033 @code{t}:   Throw away only the illegal characters, not the whole word.
4034 @item @var{abbrev}
4035 @code{nil}: Never abbreviate words.@*
4036 @code{t}:   Always abbreviate words (see @code{reftex-abbrev-parameters}).@*
4037 @code{1}:   Abbreviate words if necessary to shorten label string.
4038 @item @var{separator}
4039 String separating different words in the label.
4040 @item @var{ignorewords}
4041 List of words which should not be part of labels.
4042 @item @var{downcase}
4043 @code{t}:   Downcase words before putting them into the label.@*
4044 @end table
4045 @end defopt
4047 @defopt reftex-label-illegal-re
4048 Regexp matching characters not legal in labels.
4049 @end defopt
4051 @defopt reftex-abbrev-parameters
4052 Parameters for abbreviation of words.  A list of four parameters.@refill
4053 @table @asis
4054 @item @var{min-chars}
4055 Minimum number of characters remaining after abbreviation.
4056 @item @var{min-kill}
4057 Minimum number of characters to remove when abbreviating words.@refill
4058 @item @var{before}
4059 Character class before abbrev point in word.@refill
4060 @item @var{after}
4061 Character class after  abbrev point in word.@refill
4062 @end table
4063 @end defopt
4065 @node Options (Referencing Labels), Options (Creating Citations), Options (Creating Labels), Options
4066 @section Referencing Labels
4067 @cindex Options, referencing labels
4068 @cindex Referencing labels, options
4070 @defopt reftex-label-menu-flags
4071 List of flags governing the label menu makeup. The flags are:
4072 @table @asis
4073 @item @var{table-of-contents}
4074 Show the labels embedded in a table of context.@refill
4075 @item @var{section-numbers}
4076 Include section numbers (like 4.1.3) in table of contents.@refill
4077 @item @var{counters}
4078 Show counters.  This just numbers the labels in the menu.@refill
4079 @item @var{no-context}
4080 Non-@code{nil} means do @emph{not} show the short context.@refill
4081 @item @var{follow}
4082 Follow full context in other window.@refill
4083 @item @var{show-commented}
4084 Show labels from regions which are commented out.@refill
4085 @item @var{match-everywhere}
4086 Obsolete flag.@refill
4087 @item @var{show-files}
4088 Show begin and end of included files.@refill
4089 @end table
4091 Each of these flags can be set to @code{t} or @code{nil}, or to a string
4092 of type letters indicating the label types for which it should be true.
4093 These strings work like character classes in regular expressions.  Thus,
4094 setting one of the flags to @samp{"sf"} makes the flag true for section
4095 and figure labels, @code{nil} for everything else.  Setting it to
4096 @samp{"^sf"} makes it the other way round.@refill
4098 The available label types are: @code{s} (section), @code{f} (figure),
4099 @code{t} (table), @code{i} (item), @code{e} (equation), @code{n}
4100 (footnote), plus any definitions in @code{reftex-label-alist}.@refill
4102 Most options can also be switched from the label menu itself - so if you
4103 decide here to not have a table of contents in the label menu, you can
4104 still get one interactively during selection from the label menu.@refill
4105 @end defopt
4107 @defopt reftex-multiref-punctuation
4108 Punctuation strings for multiple references.  When marking is used in
4109 the selection buffer to select several references, this variable
4110 associates the 3 marking characters @samp{,-+} with prefix strings to be
4111 inserted into the buffer before the corresponding @code{\ref} macro.
4112 This is used to string together whole reference sets, like
4113 @samp{eqs. 1,2,3-5,6 and 7} in a single call to
4114 @code{reftex-reference}.@refill
4115 @end defopt
4117 @defopt reftex-vref-is-default
4118 Non-@code{nil} means, the varioref macro @code{\vref} is used as
4119 default.  In the selection buffer, the @kbd{v} key toggles the reference
4120 macro between @code{\ref} and @code{\vref}.  The value of this variable
4121 determines the default which is active when entering the selection
4122 process.  Instead of @code{nil} or @code{t}, this may also be a string
4123 of type letters indicating the label types for which it should be
4124 true.@refill
4125 @end defopt
4127 @defopt reftex-fref-is-default
4128 Non-@code{nil} means, the fancyref macro @code{\fref} is used as
4129 default.  In the selection buffer, the @kbd{V} key toggles the reference
4130 macro between @code{\ref}, @code{\fref} and @code{\Fref}.  The value of
4131 this variable determines the default which is active when entering the
4132 selection process.  Instead of @code{nil} or @code{t}, this may also be
4133 a string of type letters indicating the label types for which it should
4134 be true.
4135 @end defopt
4137 @deffn Hook reftex-format-ref-function
4138 If non-@code{nil}, should be a function which produces the string to
4139 insert as a reference.  Note that the insertion format can also be
4140 changed with @code{reftex-label-alist}.  This hook also is used by the
4141 special commands to insert @code{\vref} and @code{\fref} references, so
4142 even if you set this, your setting will be ignored by the special
4143 commands.  The function will be called with two arguments, the
4144 @var{label} and the @var{default-format} (usually @samp{~\ref@{%s@}}).
4145 It should return the string to insert into the buffer.@refill
4146 @end deffn
4148 @defopt reftex-level-indent
4149 Number of spaces to be used for indentation per section level.@refill
4150 @end defopt
4152 @defopt reftex-guess-label-type
4153 Non-@code{nil} means, @code{reftex-reference} will try to guess the
4154 label type.  To do that, @b{Ref@TeX{}} will look at the word before the
4155 cursor and compare it with the magic words given in
4156 @code{reftex-label-alist}.  When it finds a match, @b{Ref@TeX{}} will
4157 immediately offer the correct label menu - otherwise it will prompt you
4158 for a label type.  If you set this variable to @code{nil}, @b{Ref@TeX{}}
4159 will always prompt for a label type.@refill
4160 @end defopt
4162 @deffn {Normal Hook} reftex-display-copied-context-hook
4163 Normal Hook which is run before context is displayed anywhere.  Designed
4164 for @w{@code{X-Symbol}}, but may have other uses as well.@refill
4165 @end deffn
4167 @deffn Hook reftex-pre-refontification-functions
4168 @code{X-Symbol} specific hook.  Probably not useful for other purposes.
4169 The functions get two arguments, the buffer from where the command
4170 started and a symbol indicating in what context the hook is
4171 called.@refill
4172 @end deffn
4174 @deffn {Normal Hook} reftex-select-label-mode-hook
4175 Normal hook which is run when a selection buffer enters
4176 @code{reftex-select-label-mode}.@refill 
4177 @end deffn
4179 @deffn Keymap reftex-select-label-map
4180 The keymap which is active in the labels selection process
4181 (@pxref{Referencing Labels}).@refill
4182 @end deffn
4184 @node Options (Creating Citations), Options (Index Support), Options (Referencing Labels), Options
4185 @section Creating Citations
4186 @cindex Options, creating citations
4187 @cindex Creating citations, options
4189 @defopt reftex-bibliography-commands
4190 LaTeX commands which specify the BibTeX databases to use with the document.
4191 @end defopt
4193 @defopt reftex-bibfile-ignore-regexps
4194 List of regular expressions to exclude files in
4195 @code{\\bibliography@{..@}}.  File names matched by any of these regexps
4196 will not be parsed.  Intended for files which contain only
4197 @code{@@string} macro definitions and the like, which are ignored by
4198 @b{Ref@TeX{}} anyway.@refill
4199 @end defopt
4201 @defopt reftex-default-bibliography
4202 List of BibTeX database files which should be used if none are specified.
4203 When @code{reftex-citation} is called from a document with neither
4204 a @samp{\bibliography@{...@}} statement nor a @code{thebibliography}
4205 environment, @b{Ref@TeX{}} will scan these files instead.  Intended for
4206 using @code{reftex-citation} in non-LaTeX files.  The files will be
4207 searched along the BIBINPUTS or TEXBIB path.@refill
4208 @end defopt
4210 @defopt reftex-sort-bibtex-matches
4211 Sorting of the entries found in BibTeX databases by reftex-citation.
4212 Possible values:@refill
4213 @example
4214 nil          @r{Do not sort entries.}
4215 author       @r{Sort entries by author name.}
4216 year         @r{Sort entries by increasing year.}
4217 reverse-year @r{Sort entries by decreasing year.}
4218 @end example
4219 @end defopt
4221 @defopt reftex-cite-format
4222 The format of citations to be inserted into the buffer.  It can be a
4223 string, an alist or a symbol.  In the simplest case this is just the string
4224 @samp{\cite@{%l@}}, which is also the default.  See the definition of
4225 @code{reftex-cite-format-builtin} for more complex examples.@refill
4227 If @code{reftex-cite-format} is a string, it will be used as the format.
4228 In the format, the following percent escapes will be expanded.@refill
4230 @table @code
4231 @item %l
4232 The BibTeX label of the citation.
4233 @item %a
4234 List of author names, see also @code{reftex-cite-punctuation}.
4235 @item %2a
4236 Like %a, but abbreviate more than 2 authors like Jones et al.
4237 @item %A
4238 First author name only.
4239 @item %e
4240 Works like @samp{%a}, but on list of editor names. (@samp{%2e} and
4241 @samp{%E} work a well).@refill
4242 @end table
4244 It is also possible to access all other BibTeX database fields:
4246 @example
4247 %b booktitle     %c chapter        %d edition    %h howpublished
4248 %i institution   %j journal        %k key        %m month
4249 %n number        %o organization   %p pages      %P first page
4250 %r address       %s school         %u publisher  %t title
4251 %v volume        %y year
4252 %B booktitle, abbreviated          %T title, abbreviated
4253 @end example
4255 @noindent
4256 Usually, only @samp{%l} is needed.  The other stuff is mainly for the
4257 echo area display, and for @code{(setq reftex-comment-citations t)}.@refill
4259 @samp{%<} as a special operator kills punctuation and space around it
4260 after the string has been formatted.@refill
4262 Beware that all this only works with BibTeX database files.  When
4263 citations are made from the @code{\bibitems} in an explicit
4264 @code{thebibliography} environment, only @samp{%l} is available.@refill
4266 If @code{reftex-cite-format} is an alist of characters and strings, the
4267 user will be prompted for a character to select one of the possible
4268 format strings.@refill
4270 In order to configure this variable, you can either set
4271 @code{reftex-cite-format} directly yourself or set it to the
4272 @emph{symbol} of one of the predefined styles.  The predefined symbols
4273 are those which have an association in the constant
4274 @code{reftex-cite-format-builtin})  E.g.: @code{(setq reftex-cite-format
4275 'natbib)}.@refill
4276 @end defopt
4278 @deffn Hook reftex-format-cite-function
4280 If non-@code{nil}, should be a function which produces the string to
4281 insert as a citation.  Note that the citation format can also be changed
4282 with the variable @code{reftex-cite-format}.  The function will be
4283 called with two arguments, the @var{citation-key} and the
4284 @var{default-format} (taken from @code{reftex-cite-format}).  It should
4285 return the string to insert into the buffer.@refill
4286 @end deffn
4288 @defopt reftex-comment-citations
4289 Non-@code{nil} means add a comment for each citation describing the full
4290 entry.  The comment is formatted according to
4291 @code{reftex-cite-comment-format}.@refill
4292 @end defopt
4294 @defopt reftex-cite-comment-format
4295 Citation format used for commented citations.  Must @emph{not} contain
4296 @samp{%l}.  See the variable @code{reftex-cite-format} for possible
4297 percent escapes.@refill
4298 @end defopt
4300 @defopt reftex-cite-punctuation
4301 Punctuation for formatting of name lists in citations.  This is a list
4302 of 3 strings.@refill
4303 @enumerate
4304 @item
4305 normal names separator, like @samp{, } in Jones, Brown and Miller
4306 @item
4307 final names separator, like @samp{ and }  in Jones, Brown and Miller
4308 @item
4309 The @samp{et al.} string, like @samp{ @{\it et al.@}} in 
4310 Jones @{\it et al.@}
4311 @end enumerate
4312 @end defopt
4314 @deffn {Normal Hook} reftex-select-bib-mode-hook
4315 Normal hook which is run when a selection buffer enters
4316 @code{reftex-select-bib-mode}.@refill 
4317 @end deffn
4319 @deffn Keymap reftex-select-bib-map
4320 The keymap which is active in the citation-key selection process
4321 (@pxref{Creating Citations}).@refill
4322 @end deffn
4324 @node Options (Index Support), Options (Viewing Cross-References), Options (Creating Citations),  Options
4325 @section Index Support
4326 @cindex Options, Index support
4327 @cindex Index support, options
4329 @defopt reftex-support-index
4330 Non-@code{nil} means, index entries are parsed as well.  Index support
4331 is resource intensive and the internal structure holding the parsed
4332 information can become quite big.  Therefore it can be turned off.  When
4333 this is @code{nil} and you execute a command which requires index
4334 support, you will be asked for confirmation to turn it on and rescan the
4335 document.@refill
4336 @end defopt
4338 @defopt reftex-index-special-chars
4339 List of special characters in index entries, given as strings.  These
4340 correspond to the @code{MakeIndex} keywords 
4341 @code{(@var{level} @var{encap} @var{actual} @var{quote} @var{escape})}.
4342 @end defopt
4344 @defopt reftex-index-macros
4345 List of macros which define index entries.  The structure of each entry
4347 @lisp
4348 (@var{macro} @var{index-tag} @var{key} @var{prefix} @var{exclude} @var{repeat})
4349 @end lisp
4351 @var{macro} is the macro.  Arguments should be denoted by empty braces,
4352 as for example in @samp{\index[]@{*@}}.  Use square brackets to denote
4353 optional arguments.  The star marks where the index key is.@refill
4355 @var{index-tag} is a short name of the index.  @samp{idx} and @samp{glo}
4356 are reserved for the default index and the glossary.  Other indices can
4357 be defined as well.  If this is an integer, the Nth argument of the
4358 macro holds the index tag.@refill
4360 @var{key} is a character which is used to identify the macro for input
4361 with @code{reftex-index}.  @samp{?i}, @samp{?I}, and @samp{?g} are
4362 reserved for default index and glossary.@refill
4364 @var{prefix} can be a prefix which is added to the @var{key} part of the
4365 index entry.  If you have a macro
4366 @code{\newcommand@{\molec@}[1]@{#1\index@{Molecules!#1@}}, this prefix
4367 should be @samp{Molecules!}.@refill
4369 @var{exclude} can be a function.  If this function exists and returns a
4370 non-nil value, the index entry at point is ignored.  This was
4371 implemented to support the (deprecated) @samp{^} and @samp{_} shortcuts
4372 in the LaTeX2e @code{index} package.@refill
4374 @var{repeat}, if non-@code{nil}, means the index macro does not typeset
4375 the entry in the text, so that the text has to be repeated outside the
4376 index macro.  Needed for @code{reftex-index-selection-or-word} and for
4377 indexing from the phrase buffer.@refill
4379 The final entry may also be a symbol.  It must have an association in
4380 the variable @code{reftex-index-macros-builtin} to specify the main
4381 indexing package you are using.  Legal values are currently@refill
4382 @example
4383 default         @r{The LaTeX default - unnecessary to specify this one}
4384 multind         @r{The multind.sty package}
4385 index           @r{The index.sty package}
4386 index-shortcut  @r{The index.sty packages with the ^ and _ shortcuts.}
4387                 @r{Should not be used - only for old documents}
4388 @end example
4389 Note that AUCTeX sets these things internally for @b{Ref@TeX{}} as well,
4390 so with a sufficiently new version of AUCTeX, you should not set the
4391 package here.
4392 @end defopt
4394 @defopt reftex-index-default-macro
4395 The default index macro for @code{reftex-index-selection-or-word}.
4396 This is a list with @code{(@var{macro-key} @var{default-tag})}.
4398 @var{macro-key} is a character identifying an index macro - see
4399 @code{reftex-index-macros}.
4401 @var{default-tag} is the tag to be used if the macro requires a
4402 @var{tag} argument.  When this is @code{nil} and a @var{tag} is needed,
4403 @b{Ref@TeX{}} will ask for it.  When this is the empty string and the
4404 TAG argument of the index macro is optional, the TAG argument will be
4405 omitted.@refill
4406 @end defopt
4408 @defopt reftex-index-default-tag
4409 Default index tag.  When working with multiple indexes, RefTeX queries
4410 for an index tag when creating index entries or displaying a specific
4411 index.  This variable controls the default offered for these queries.
4412 The default can be selected with @key{RET} during selection or
4413 completion.  Legal values of this variable are:@refill
4414 @example
4415 nil        @r{Do not provide a default index}
4416 "tag"      @r{The default index tag given as a string, e.g. "idx"}
4417 last       @r{The last used index tag will be offered as default}
4418 @end example
4419 @end defopt
4421 @defopt reftex-index-math-format
4422 Format of index entries when copied from inside math mode.  When
4423 @code{reftex-index-selection-or-word} is executed inside TeX math mode,
4424 the index key copied from the buffer is processed with this format
4425 string through the @code{format} function.  This can be used to add the
4426 math delimiters (e.g. @samp{$}) to the string.  Requires the
4427 @file{texmathp.el} library which is part of AUCTeX.@refill
4428 @end defopt
4430 @defopt reftex-index-phrase-file-extension
4431 File extension for the index phrase file.  This extension will be added
4432 to the base name of the master file.
4433 @end defopt
4435 @defopt reftex-index-phrases-logical-and-regexp
4436 Regexp matching the @samp{and} operator for index arguments in phrases
4437 file.  When several index arguments in a phrase line are separated by
4438 this operator, each part will generate an index macro.  So each match of
4439 the search phrase will produce @emph{several} different index entries.
4440 Make sure this does no match things which are not separators.  This
4441 logical @samp{and} has higher priority than the logical @samp{or}
4442 specified in @code{reftex-index-phrases-logical-or-regexp}.@refill
4443 @end defopt
4445 @defopt reftex-index-phrases-logical-or-regexp
4446 Regexp matching the @samp{or} operator for index arguments in phrases
4447 file.  When several index arguments in a phrase line are separated by
4448 this operator, the user will be asked to select one of them at each
4449 match of the search phrase.  The first index arg will be the default.  A
4450 number key @kbd{1}--@kbd{9} must be pressed to switch to another.  Make
4451 sure this does no match things which are not separators.  The logical
4452 @samp{and} specified in @code{reftex-index-phrases-logical-or-regexp}
4453 has higher priority than this logical @samp{or}.@refill
4454 @end defopt
4456 @defopt reftex-index-phrases-search-whole-words
4457 Non-@code{nil} means phrases search will look for whole words, not subwords.
4458 This works by requiring word boundaries at the beginning and end of
4459 the search string.  When the search phrase already has a non-word-char
4460 at one of these points, no word boundary is required there.
4461 @end defopt
4463 @defopt reftex-index-phrases-case-fold-search
4464 Non-@code{nil} means, searching for index phrases will ignore
4465 case.@refill
4466 @end defopt
4468 @defopt reftex-index-verify-function
4469 A function which is called at each match during global indexing.
4470 If the function returns nil, the current match is skipped.
4471 @end defopt
4473 @defopt reftex-index-phrases-skip-indexed-matches
4474 Non-@code{nil} means, skip matches which appear to be indexed already.
4475 When doing global indexing from the phrases buffer, searches for some
4476 phrases may match at places where that phrase was already indexed.  In
4477 particular when indexing an already processed document again, this
4478 will even be the norm.  When this variable is non-@code{nil},
4479 @b{Ref@TeX{}} checks if the match is an index macro argument, or if an
4480 index macro is directly before or after the phrase.  If that is the
4481 case, that match will be ignored.@refill
4482 @end defopt
4484 @defopt reftex-index-phrases-wrap-long-lines
4485 Non-@code{nil} means, when indexing from the phrases buffer, wrap lines.
4486 Inserting indexing commands in a line makes the line longer - often
4487 so long that it does not fit onto the screen.  When this variable is
4488 non-@code{nil}, newlines will be added as necessary before and/or after the
4489 indexing command to keep lines short.  However, the matched text
4490 phrase and its index command will always end up on a single line.@refill
4491 @end defopt
4493 @defopt reftex-index-phrases-sort-prefers-entry
4494 Non-@code{nil} means when sorting phrase lines, the explicit index entry
4495 is used. Phrase lines in the phrases buffer contain a search phrase, and
4496 sorting is normally based on these.  Some phrase lines also have
4497 an explicit index argument specified.  When this variable is
4498 non-@code{nil}, the index argument will be used for sorting.@refill
4499 @end defopt
4501 @defopt reftex-index-phrases-sort-in-blocks
4502 Non-@code{nil} means, empty and comment lines separate phrase buffer
4503 into blocks.  Sorting will then preserve blocks, so that lines are
4504 re-arranged only within blocks.
4505 @end defopt
4507 @defopt reftex-index-phrases-map
4508 Keymap for the Index Phrases buffer.
4509 @end defopt
4511 @defopt reftex-index-phrases-mode-hook
4512 Normal hook which is run when a buffer is put into
4513 @code{reftex-index-phrases-mode}.@refill
4514 @end defopt
4516 @defopt reftex-index-section-letters
4517 The letters which denote sections in the index.  Usually these are all
4518 capital letters.  Don't use any downcase letters.  Order is not
4519 significant, the index will be sorted by whatever the sort function
4520 thinks is correct.  In addition to these letters, @b{Ref@TeX{}} will
4521 create a group @samp{!} which contains all entries sorted below the
4522 lowest specified letter.  In the @file{*Index*} buffer, pressing any of
4523 these capital letters or @kbd{!} will jump to that section.@refill
4524 @end defopt
4526 @defopt reftex-index-include-context
4527 Non-@code{nil} means, display the index definition context in the
4528 @file{*Index*} buffer.  This flag may also be toggled from the
4529 @file{*Index*} buffer with the @kbd{c} key.
4530 @end defopt
4532 @defopt reftex-index-follow-mode
4533 Non-@code{nil} means, point in @file{*Index*} buffer will cause other
4534 window to follow.  The other window will show the corresponding part of
4535 the document.  This flag can be toggled from within the @file{*Index*}
4536 buffer with the @kbd{f} key.
4537 @end defopt
4539 @deffn Keymap reftex-index-map
4540 The keymap which is active in the @file{*Index*} buffer
4541 (@pxref{Index Support}).@refill
4542 @end deffn
4544 @node Options (Viewing Cross-References), Options (Finding Files), Options (Index Support),  Options
4545 @section Viewing Cross-References
4546 @cindex Options, viewing cross-references
4547 @cindex Viewing cross-references, options
4549 @defopt reftex-view-crossref-extra
4550 Macros which can be used for the display of cross references.
4551 This is used when `reftex-view-crossref' is called with point in an
4552 argument of a macro.  Note that crossref viewing for citations,
4553 references (both ways) and index entries is hard-coded.  This variable
4554 is only to configure additional structures for which crossreference
4555 viewing can be useful.  Each entry has the structure 
4556 @example
4557 (@var{macro-re} @var{search-re} @var{highlight}).
4558 @end example
4559 @var{macro-re} is matched against the macro.  @var{search-re} is the
4560 regexp used to search for cross references.  @samp{%s} in this regexp is
4561 replaced with the macro argument at point.  @var{highlight} is an
4562 integer indicating which subgroup of the match should be highlighted.
4563 @end defopt
4565 @defopt reftex-auto-view-crossref
4566 Non-@code{nil} means, initially turn automatic viewing of crossref info
4567 on.  Automatic viewing of crossref info normally uses the echo area.
4568 Whenever point is idle for more than @code{reftex-idle-time} seconds on
4569 the argument of a @code{\ref} or @code{\cite} macro, and no other
4570 message is being displayed, the echo area will display information about
4571 that cross reference.  You can also set the variable to the symbol
4572 @code{window}.  In this case a small temporary window is used for the
4573 display.  This feature can be turned on and off from the menu
4574 (Ref->Options).@refill
4575 @end defopt
4577 @defopt reftex-idle-time
4578 Time (secs) Emacs has to be idle before automatic crossref display 
4579 or toc recentering is done.@refill
4580 @end defopt
4582 @defopt reftex-cite-view-format
4583 Citation format used to display citation info in the message area.  See
4584 the variable @code{reftex-cite-format} for possible percent
4585 escapes.@refill
4586 @end defopt
4588 @defopt reftex-revisit-to-echo
4589 Non-@code{nil} means, automatic citation display will revisit files if
4590 necessary.  When nil, citation display in echo area will only be active
4591 for cached echo strings (see @code{reftex-cache-cite-echo}), or for
4592 BibTeX database files which are already visited by a live associated
4593 buffers.@refill
4594 @end defopt
4596 @defopt reftex-cache-cite-echo
4597 Non-@code{nil} means, the information displayed in the echo area for
4598 cite macros (see variable @code{reftex-auto-view-crossref}) is cached and
4599 saved along with the parsing information.  The cache survives document
4600 scans.  In order to clear it, use @kbd{M-x reftex-reset-mode}.
4601 @end defopt
4603 @node Options (Finding Files), Options (Optimizations), Options (Viewing Cross-References),  Options
4604 @section Finding Files
4605 @cindex Options, Finding Files
4606 @cindex Finding files, options
4608 @defopt reftex-texpath-environment-variables
4609 List of specifications how to retrieve the search path for TeX files.
4610 Several entries are possible.@refill
4611 @itemize @minus
4612 @item
4613 If an element is the name of an environment variable, its content is
4614 used.@refill
4615 @item
4616 If an element starts with an exclamation mark, it is used as a command
4617 to retrieve the path.  A typical command with the kpathsearch library
4618 would be @w{@code{"!kpsewhich -show-path=.tex"}}.
4619 @item
4620 Otherwise the element itself is interpreted as a path.
4621 @end itemize
4622 Multiple directories can be separated by the system dependent
4623 @code{path-separator}.  Directories ending in @samp{//} or @samp{!!} will
4624 be expanded recursively.  See also @code{reftex-use-external-file-finders}.
4625 @end defopt
4627 @defopt reftex-bibpath-environment-variables
4628 List of specifications how to retrieve the search path for BibTeX
4629 files.  Several entries are possible.@refill
4630 @itemize @minus
4631 @item
4632 If an element is the name of an environment variable, its content is
4633 used.@refill
4634 @item
4635 If an element starts with an exclamation mark, it is used as a command
4636 to retrieve the path.  A typical command with the kpathsearch library
4637 would be @w{@code{"!kpsewhich -show-path=.bib"}}.
4638 @item
4639 Otherwise the element itself is interpreted as a path.
4640 @end itemize
4641 Multiple directories can be separated by the system dependent
4642 @code{path-separator}.  Directories ending in @samp{//} or @samp{!!} will
4643 be expanded recursively.  See also @code{reftex-use-external-file-finders}.
4644 @end defopt
4646 @defopt reftex-file-extensions
4647 Association list with file extensions for different file types.
4648 This is a list of items, each item is like: 
4649 @code{(@var{type} . (@var{def-ext} @var{other-ext} ...))}
4650 @example
4651 @var{type}:       @r{File type like @code{"bib"} or @code{"tex"}.}
4652 @var{def-ext}:    @r{The default extension for that file type, like @code{".tex"} or @code{".bib"}.}
4653 @var{other-ext}:  @r{Any number of other legal extensions for this file type.}
4654 @end example
4655 When a files is searched and it does not have any of the legal extensions,
4656 we try the default extension first, and then the naked file name.@refill
4657 @end defopt
4659 @defopt reftex-search-unrecursed-path-first
4660 Non-@code{nil} means, search all specified directories before trying
4661 recursion.  Thus, in a path @samp{.//:/tex/}, search first @samp{./},
4662 then @samp{/tex/}, and then all subdirectories of @samp{./}.  If this
4663 option is @code{nil}, the subdirectories of @samp{./} are searched
4664 before @samp{/tex/}.  This is mainly for speed - most of the time the
4665 recursive path is for the system files and not for the user files.  Set
4666 this to @code{nil} if the default makes @b{Ref@TeX{}} finding files with
4667 equal names in wrong sequence.@refill
4668 @end defopt
4670 @defopt reftex-use-external-file-finders
4671 Non-@code{nil} means, use external programs to find files.  Normally,
4672 @b{Ref@TeX{}} searches the paths given in the environment variables
4673 @code{TEXINPUTS} and @code{BIBINPUTS} to find TeX files and BibTeX
4674 database files.  With this option turned on, it calls an external
4675 program specified in the option @code{reftex-external-file-finders}
4676 instead.  As a side effect, the variables
4677 @code{reftex-texpath-environment-variables} and
4678 @code{reftex-bibpath-environment-variables} will be ignored.
4679 @end defopt
4681 @defopt reftex-external-file-finders
4682 Association list with external programs to call for finding files.  Each
4683 entry is a cons cell @w{@code{(@var{type} . @var{program})}}.
4684 @var{type} is either @code{"tex"} or @code{"bib"}.  @var{program} is a
4685 string containing the external program to use with any arguments.
4686 @code{%f} will be replaced by the name of the file to be found.  Note
4687 that these commands will be executed directly, not via a shell.  Only
4688 relevant when @code{reftex-use-external-file-finders} is
4689 non-@code{nil}.@refill
4690 @end defopt
4692 @page
4693 @node Options (Optimizations), Options (Fontification), Options (Finding Files), Options
4694 @section Optimizations
4695 @cindex Options, optimizations
4696 @cindex Optimizations, options
4698 @defopt reftex-keep-temporary-buffers
4699 Non-@code{nil} means, keep buffers created for parsing and lookup.
4700 @b{Ref@TeX{}} sometimes needs to visit files related to the current
4701 document.  We distinguish files visited for@refill
4702 @table @asis
4703 @item PARSING
4704 Parts of a multifile document loaded when (re)-parsing the
4705 document.@refill
4706 @item LOOKUP
4707 BibTeX database files and TeX files loaded to find a reference, to
4708 display label context, etc.@refill
4709 @end table
4710 The created buffers can be kept for later use, or be thrown away
4711 immediately after use, depending on the value of this variable:@refill
4713 @table @code
4714 @item nil
4715 Throw away as much as possible.
4716 @item t
4717 Keep everything.
4718 @item 1
4719 Throw away buffers created for parsing, but keep the ones created for
4720 lookup.@refill
4721 @end table
4723 If a buffer is to be kept, the file is visited normally (which is
4724 potentially slow but will happen only once). If a buffer is to be thrown
4725 away, the initialization of the buffer depends upon the variable
4726 @code{reftex-initialize-temporary-buffers}.@refill
4727 @end defopt
4729 @defopt reftex-initialize-temporary-buffers
4730 Non-@code{nil} means do initializations even when visiting file
4731 temporarily.  When @code{nil}, @b{Ref@TeX{}} may turn off find-file hooks and
4732 other stuff to briefly visit a file. When @code{t}, the full default
4733 initializations are done (@code{find-file-hook} etc.).  Instead of
4734 @code{t} or @code{nil}, this variable may also be a list of hook
4735 functions to do a minimal initialization.@refill
4736 @end defopt
4738 @defopt reftex-no-include-regexps
4739 List of regular expressions to exclude certain input files from parsing.
4740 If the name of a file included via @code{\include} or @code{\input} is
4741 matched by any of the regular expressions in this list, that file is not
4742 parsed by @b{Ref@TeX{}}.
4743 @end defopt
4745 @defopt reftex-enable-partial-scans
4746 Non-@code{nil} means, re-parse only 1 file when asked to re-parse.
4747 Re-parsing is normally requested with a @kbd{C-u} prefix to many @b{Ref@TeX{}}
4748 commands, or with the @kbd{r} key in menus.  When this option is
4749 @code{t} in a multifile document, we will only parse the current buffer,
4750 or the file associated with the label or section heading near point in a
4751 menu.  Requesting re-parsing of an entire multifile document then
4752 requires a @kbd{C-u C-u} prefix or the capital @kbd{R} key in
4753 menus.@refill
4754 @end defopt
4756 @defopt reftex-save-parse-info
4757 Non-@code{nil} means, save information gathered with parsing in files.
4758 The file @file{MASTER.rel} in the same directory as @file{MASTER.tex} is
4759 used to save the information.  When this variable is @code{t},
4760 @itemize @minus
4761 @item
4762 accessing the parsing information for the first time in an editing
4763 session will read that file (if available) instead of parsing the
4764 document.@refill
4765 @item
4766 exiting Emacs or killing a buffer in reftex-mode will cause a new
4767 version of the file to be written.@refill
4768 @end itemize
4769 @end defopt
4771 @defopt reftex-parse-file-extension
4772 File extension for the file in which parser information is stored.
4773 This extension is added to the base name of the master file.
4774 @end defopt
4776 @defopt reftex-allow-automatic-rescan
4777 Non-@code{nil} means, @b{Ref@TeX{}} may rescan the document when this seems
4778 necessary.  Applies (currently) only in rare cases, when a new label
4779 cannot be placed with certainty into the internal label list.
4780 @end defopt
4782 @defopt reftex-use-multiple-selection-buffers
4783 Non-@code{nil} means use a separate selection buffer for each label
4784 type.  These buffers are kept from one selection to the next and need
4785 not to be created for each use - so the menu generally comes up faster.
4786 The selection buffers will be erased (and therefore updated)
4787 automatically when new labels in its category are added.  See the
4788 variable @code{reftex-auto-update-selection-buffers}.@refill
4789 @end defopt
4791 @defopt reftex-auto-update-selection-buffers
4792 Non-@code{nil} means, selection buffers will be updated automatically.
4793 When a new label is defined with @code{reftex-label}, all selection
4794 buffers associated with that label category are emptied, in order to
4795 force an update upon next use.  When @code{nil}, the buffers are left
4796 alone and have to be updated by hand, with the @kbd{g} key from the
4797 label selection process.  The value of this variable will only have any
4798 effect when @code{reftex-use-multiple-selection-buffers} is
4799 non-@code{nil}.@refill
4800 @end defopt
4802 @node Options (Fontification), Options (Misc), Options (Optimizations), Options
4803 @section Fontification
4804 @cindex Options, fontification
4805 @cindex Fontification, options
4807 @defopt reftex-use-fonts
4808 Non-@code{nil} means, use fonts in label menu and on-the-fly help.
4809 Font-lock must be loaded as well to actually get fontified
4810 display.  After changing this option, a rescan may be necessary to
4811 activate it.@refill
4812 @end defopt
4814 @defopt reftex-refontify-context
4815 Non-@code{nil} means, re-fontify the context in the label menu with
4816 font-lock.  This slightly slows down the creation of the label menu.  It
4817 is only necessary when you definitely want the context fontified.@refill
4819 This option may have 3 different values:
4820 @table @code
4821 @item nil
4822 Never refontify.
4823 @item t
4824 Always refontify.
4825 @item 1
4826 Refontify when necessary, e.g. with old versions of the x-symbol
4827 package.@refill
4828 @end table
4829 The option is ignored when @code{reftex-use-fonts} is @code{nil}.@refill
4830 @end defopt
4832 @defopt reftex-highlight-selection
4833 Non-@code{nil} means, highlight selected text in selection and
4834 @file{*toc*} buffers.  Normally, the text near the cursor is the
4835 @emph{selected} text, and it is highlighted.  This is the entry most
4836 keys in the selection and @file{*toc*} buffers act on.  However, if you
4837 mainly use the mouse to select an item, you may find it nice to have
4838 mouse-triggered highlighting @emph{instead} or @emph{as well}. The
4839 variable may have one of these values:@refill
4841 @example
4842 nil      @r{No highlighting.}
4843 cursor   @r{Highlighting is cursor driven.}
4844 mouse    @r{Highlighting is mouse driven.}
4845 both     @r{Both cursor and mouse trigger highlighting.}
4846 @end example
4848 Changing this variable requires to rebuild the selection and *toc*
4849 buffers to become effective (keys @kbd{g} or @kbd{r}).@refill
4850 @end defopt
4852 @defopt reftex-cursor-selected-face
4853 Face name to highlight cursor selected item in toc and selection buffers.
4854 See also the variable @code{reftex-highlight-selection}.@refill
4855 @end defopt
4856 @defopt reftex-mouse-selected-face
4857 Face name to highlight mouse selected item in toc and selection buffers.
4858 See also the variable @code{reftex-highlight-selection}.@refill
4859 @end defopt
4860 @defopt reftex-file-boundary-face
4861 Face name for file boundaries in selection buffer.
4862 @end defopt
4863 @defopt reftex-label-face
4864 Face name for labels in selection buffer.
4865 @end defopt
4866 @defopt reftex-section-heading-face
4867 Face name for section headings in toc and selection buffers.
4868 @end defopt
4869 @defopt reftex-toc-header-face
4870 Face name for the header of a toc buffer.
4871 @end defopt
4872 @defopt reftex-bib-author-face
4873 Face name for author names in bib selection buffer.
4874 @end defopt
4875 @defopt reftex-bib-year-face
4876 Face name for year in bib selection buffer.
4877 @end defopt
4878 @defopt reftex-bib-title-face
4879 Face name for article title in bib selection buffer.
4880 @end defopt
4881 @defopt reftex-bib-extra-face
4882 Face name for bibliographic information in bib selection buffer.
4883 @end defopt
4884 @defopt reftex-select-mark-face
4885 Face name for marked entries in the selection buffers.
4886 @end defopt
4887 @defopt reftex-index-header-face
4888 Face name for the header of an index buffer.
4889 @end defopt
4890 @defopt reftex-index-section-face
4891 Face name for the start of a new letter section in the index.
4892 @end defopt
4893 @defopt reftex-index-tag-face
4894 Face name for index names (for multiple indices).
4895 @end defopt
4896 @defopt reftex-index-face
4897 Face name for index entries.
4898 @end defopt
4900 @node Options (Misc), , Options (Fontification), Options
4901 @section Miscellaneous
4902 @cindex Options, misc
4904 @defopt reftex-extra-bindings
4905 Non-@code{nil} means, make additional key bindings on startup.  These
4906 extra bindings are located in the users @samp{C-c letter}
4907 map.  @xref{Key Bindings}.@refill
4908 @end defopt
4910 @defopt reftex-plug-into-AUCTeX
4911 Plug-in flags for AUCTeX interface.  This variable is a list of
4912 5 boolean flags.  When a flag is non-@code{nil}, @b{Ref@TeX{}}
4913 will@refill
4915 @example
4916 - supply labels in new sections and environments  (flag 1)
4917 - supply arguments for macros like @code{\label}         (flag 2)
4918 - supply arguments for macros like @code{\ref}           (flag 3)
4919 - supply arguments for macros like @code{\cite}          (flag 4)
4920 - supply arguments for macros like @code{\index}         (flag 5)
4921 @end example
4923 You may also set the variable itself to t or nil in order to turn all
4924 options on or off, respectively.@*
4925 Supplying labels in new sections and environments applies when creating
4926 sections with @kbd{C-c C-s} and environments with @kbd{C-c C-e}.@*
4927 Supplying macro arguments applies when you insert such a macro
4928 interactively with @kbd{C-c @key{RET}}.@*
4929 See the AUCTeX documentation for more information.
4930 @end defopt
4932 @defopt reftex-revisit-to-follow
4933 Non-@code{nil} means, follow-mode will revisit files if necessary.
4934 When nil, follow-mode will be suspended for stuff in unvisited files.
4935 @end defopt
4937 @defopt reftex-allow-detached-macro-args
4938 Non-@code{nil} means, allow arguments of macros to be detached by
4939 whitespace.  When this is @code{t}, the @samp{aaa} in @w{@samp{\bbb
4940 [xxx] @{aaa@}}} will be considered an argument of @code{\bb}.  Note that
4941 this will be the case even if @code{\bb} is defined with zero or one
4942 argument.@refill
4943 @end defopt
4945 @node Keymaps and Hooks, Changes, Options, Top
4946 @section Keymaps and Hooks
4947 @cindex Keymaps
4949 @b{Ref@TeX{}} has the usual general keymap and load-- and mode-hook.
4951 @deffn Keymap reftex-mode-map
4952 The keymap for @b{Ref@TeX{}} mode.
4953 @end deffn
4955 @deffn {Normal Hook} reftex-load-hook
4956 Normal hook which is being run when loading @file{reftex.el}.
4957 @end deffn
4959 @deffn {Normal Hook} reftex-mode-hook
4960 Normal hook which is being run when turning on @b{Ref@TeX{}} mode.@refill
4961 @end deffn
4963 Furthermore, the 4 modes used for referencing labels, creating
4964 citations, the table of contents buffer and the phrases buffer have
4965 their own keymaps and mode hooks.  See the respective sections.  There
4966 are many more hooks which are described in the relevant sections about
4967 options for a specific part of @b{Ref@TeX{}}.@refill
4969 @node Changes, , Keymaps and Hooks, Top
4970 @chapter Changes
4971 @cindex Changes
4973 Here is a list of recent changes to @b{Ref@TeX{}}.
4975 @ignore
4976 @noindent @b{Version 1.00}
4977 @itemize @bullet
4978 @item
4979 released on 7 Jan 1997.
4980 @end itemize
4982 @noindent @b{Version 1.04}
4983 @itemize @bullet
4984 @item
4985 Macros as wrappers, AMSTeX support, delayed context parsing for
4986 new labels.@refill
4987 @end itemize
4989 @noindent @b{Version 1.05}
4990 @itemize @bullet
4991 @item
4992 XEmacs port.
4993 @end itemize
4995 @noindent @b{Version 1.07}
4996 @itemize @bullet
4997 @item
4998 @b{Ref@TeX{}} gets its own menu.
4999 @end itemize
5001 @noindent @b{Version 1.09}
5002 @itemize @bullet
5003 @item
5004 Support for @code{tex-main-file}, an analogue for
5005 @code{TeX-master}.@refill
5006 @item
5007 MS-DOS support.
5008 @end itemize
5010 @noindent @b{Version 2.00}
5011 @itemize @bullet
5012 @item
5013 Labels can be derived from context (default for sections).
5014 @item
5015 Configuration of label insertion and label referencing revised.
5016 @item
5017 Crossref fields in BibTeX database entries.
5018 @item
5019 @code{reftex-toc} introduced (thanks to Stephen Eglen).
5020 @end itemize
5022 @noindent @b{Version 2.03}
5023 @itemize @bullet
5024 @item
5025 @code{figure*}, @code{table*}, @code{sidewaysfigure/table} added to
5026 default environments.@refill
5027 @item
5028 @code{reftex-bibfile-ignore-list} introduced (thanks to Rory Molinari).
5029 @item
5030 New functions @code{reftex-arg-label}, @code{reftex-arg-ref},
5031 @code{reftex-arg-cite}.@refill
5032 @item
5033 Emacs/XEmacs compatibility reworked.  XEmacs 19.15 now is
5034 required.@refill
5035 @item
5036 @code{reftex-add-to-label-alist} (to be called from AUCTeX style
5037 files).@refill
5038 @item
5039 Finding context with a hook function.
5040 @item
5041 Sorting BibTeX entries (new variable:
5042 @code{reftex-sort-bibtex-matches}).
5043 @end itemize
5045 @noindent @b{Version 2.05}
5046 @itemize @bullet
5047 @item
5048 Support for @file{custom.el}.
5049 @item
5050 New function @code{reftex-grep-document} (thanks to Stephen Eglen).
5051 @end itemize
5053 @noindent @b{Version 2.07}
5054 @itemize @bullet
5055 @item
5056 New functions @code{reftex-search-document},
5057 @code{reftex-query-replace-document}.
5058 @end itemize
5060 @noindent @b{Version 2.11}
5061 @itemize @bullet
5062 @item
5063 Submitted for inclusion to Emacs and XEmacs.
5064 @end itemize
5066 @noindent @b{Version 2.14}
5067 @itemize @bullet
5068 @item
5069 Variable @code{reftex-plug-into-AUCTeX} simplifies cooperation with
5070 AUCTeX.@refill
5071 @end itemize
5073 @noindent @b{Version 2.17}
5074 @itemize @bullet
5075 @item
5076 Label prefix expands % escapes with current file name and other stuff.
5077 @item
5078 Citation format now with % escapes.  This is not backward
5079 compatible!@refill
5080 @item
5081 TEXINPUTS variable recognized when looking for input files.
5082 @item
5083 Context can be the nth argument of a macro.@refill
5084 @item
5085 Searching in the select buffer is now possible (@kbd{C-s} and
5086 @kbd{C-r}).@refill
5087 @item
5088 Display and derive-label can use two different context methods.
5089 @item
5090 AMSmath @code{xalignat} and @code{xxalignat} added.
5091 @end itemize
5093 @noindent @b{Version 3.00}
5094 @itemize @bullet
5095 @item
5096 @b{Ref@TeX{}} should work better for very large projects:
5097 @item
5098 The new parser works without creating a master buffer.
5099 @item
5100 Rescanning can be limited to a part of a multifile document.
5101 @item
5102 Information from the parser can be stored in a file.
5103 @item
5104 @b{Ref@TeX{}} can deal with macros having a naked label as an argument.
5105 @item
5106 Macros may have white space and newlines between arguments.
5107 @item
5108 Multiple identical section headings no longer confuse
5109 @code{reftex-toc}.@refill
5110 @item
5111 @b{Ref@TeX{}} should work correctly in combination with buffer-altering
5112 packages like outline, folding, x-symbol, iso-cvt, isotex, etc.@refill
5113 @item
5114 All labeled environments discussed in @emph{The LaTeX Companion} by
5115 Goossens, Mittelbach & Samarin, Addison-Wesley 1994) are part of
5116 @b{Ref@TeX{}}'s defaults.@refill
5117 @end itemize
5119 @noindent @b{Version 3.03}
5120 @itemize @bullet
5121 @item
5122 Support for the LaTeX package @code{xr}, for inter-document
5123 references.@refill
5124 @item
5125 A few (minor) Mule-related changes.
5126 @item
5127 Fixed bug which could cause @emph{huge} @file{.rel} files.
5128 @item
5129 Search for input and @file{.bib} files with recursive path definitions.
5130 @end itemize
5132 @noindent @b{Version 3.04}
5133 @itemize @bullet
5134 @item
5135 Fixed BUG in the @emph{xr} support.
5136 @end itemize
5138 @noindent @b{Version 3.05}
5139 @itemize @bullet
5140 @item
5141 Compatibility code now first checks for XEmacs feature.
5142 @end itemize
5144 @noindent @b{Version 3.07}
5145 @itemize @bullet
5146 @item
5147 @code{Ref} menu improved.
5148 @end itemize
5150 @noindent @b{Version 3.10}
5151 @itemize @bullet
5152 @item
5153 Fixed a bug which made reftex 3.07 fail on [X]Emacs version 19.
5154 @item
5155 Removed unimportant code which caused OS/2 Emacs to crash.
5156 @item
5157 All customization variables now accessible from menu.
5158 @end itemize
5160 @noindent @b{Version 3.11}
5161 @itemize @bullet
5162 @item
5163 Fixed bug which led to naked label in (e.g.) footnotes.
5164 @item
5165 Added scroll-other-window functions to RefTeX-Select.
5166 @end itemize
5168 @noindent @b{Version 3.12}
5169 @itemize @bullet
5170 @item
5171 There are 3 new keymaps for customization: @code{reftex-toc-map},
5172 @code{reftex-select-label-map}, @code{reftex-select-bib-map}.
5173 @item
5174 Refontification uses more standard font-lock stuff.
5175 @item
5176 When no BibTeX database files are specified, citations can also use
5177 @code{\bibitem} entries from a @code{thebibliography} environment.@refill
5178 @end itemize
5180 @noindent @b{Version 3.14}
5181 @itemize @bullet
5182 @item
5183 Selection buffers can be kept between selections: this is faster.
5184 See new variable @code{reftex-use-multiple-selection-buffers}.@refill
5185 @item
5186 Prefix interpretation of reftex-view-crossref changed.
5187 @item
5188 Support for the @code{varioref} package (@kbd{v} key in selection
5189 buffer).@refill
5190 @end itemize
5192 @noindent @b{Version 3.16}
5193 @itemize @bullet
5194 @item
5195 New hooks @code{reftex-format-label-function},
5196 @code{reftex-format-ref-function}, @code{reftex-format-cite-function}.@refill
5197 @item
5198 TeXInfo documentation completed.
5199 @item
5200 Some restrictions in Label inserting and referencing removed.
5201 @item
5202 New variable @code{reftex-default-bibliography}.
5203 @end itemize
5205 @noindent @b{Version 3.17}
5206 @itemize @bullet
5207 @item
5208 Additional bindings in selection and @file{*toc*} buffers.  @kbd{g}
5209 redefined.
5210 @item
5211 New command @code{reftex-save-all-document-buffers}.
5212 @item
5213 Magic word matching made more intelligent.
5214 @item
5215 Selection process can switch to completion (with @key{TAB}).
5216 @item
5217 @code{\appendix} is now recognized and influences section numbering.
5218 @item
5219 File commentary shortened considerably (use Info documentation).
5220 @item
5221 New option @code{reftex-no-include-regexps} to skip some include files.
5222 @item
5223 New option @code{reftex-revisit-to-follow}.
5224 @end itemize
5226 @noindent @b{Version 3.18}
5227 @itemize @bullet
5228 @item
5229 The selection now uses a recursive edit, much like minibuffer input.
5230 This removes all restrictions during selection.  E.g. you can now
5231 switch buffers at will, use the mouse etc.@refill
5232 @item
5233 New option @code{reftex-highlight-selection}.
5234 @item
5235 @kbd{mouse-2} can be used to select in selection and @file{*toc*}
5236 buffers.@refill
5237 @item
5238 Fixed some problems regarding the interaction with VIPER mode.
5239 @item
5240 Follow-mode is now only used after point motion.
5241 @item
5242 @b{Ref@TeX{}} now finally does not fontify temporary files anymore.
5243 @end itemize
5245 @noindent @b{Version 3.19}
5246 @itemize @bullet
5247 @item
5248 Fixed bug with AUCTeX @code{TeX-master}.
5249 @end itemize
5251 @noindent @b{Version 3.21}
5252 @itemize @bullet
5253 @item
5254 New options for all faces used by @b{Ref@TeX{}}. They're in the
5255 customization group @code{reftex-fontification-configurations}.@refill
5256 @end itemize
5258 @noindent @b{Version 3.22}
5259 @itemize @bullet
5260 @item
5261 Fixed bug with empty context strings.
5262 @item
5263 @code{reftex-mouse-view-crossref} is now bound by default at
5264 @kbd{S-mouse-2}.@refill
5265 @end itemize
5267 @noindent @b{Version 3.23}
5268 @itemize @bullet
5269 @item
5270 Parse files @file{MASTER.rel} made compatible between Emacs and XEmacs.
5271 @item
5272 @code{kill-emacs-hook} and @code{kill-buffer-hook} now write the parse 
5273 file.
5274 @item
5275 The cursor inside a @code{\ref} or @code{\cite} macro can now trigger
5276 automatic display of crossref information in the echo area.  See
5277 variable @code{reftex-auto-view-crossref}.
5278 @item
5279 AUCTeX interface updates:
5280 @itemize @minus
5281 @item
5282 AUCTeX 9.9c and later notifies @b{Ref@TeX{}} about new sections.
5283 @item
5284 @b{Ref@TeX{}} notifies AUCTeX about new labels.
5285 @item
5286 @code{TeX-arg-ref} no longer used (introduction was unnecessary).
5287 @item
5288 @code{reftex-arg-label} and @code{reftex-arg-cite} fixed up.
5289 @item
5290 Settings added to @b{Ref@TeX{}} via style files remain local.
5291 @end itemize
5292 @item
5293 Fixed bug with @code{reftex-citation} in non-latex buffers.
5294 @item
5295 Fixed bug with syntax table and context refontification.
5296 @item
5297 Safety-net for name change of @code{font-lock-reference-face}.
5298 @end itemize
5300 @noindent @b{Version 3.24}
5301 @itemize @bullet
5302 @item
5303 New option @code{reftex-revisit-to-echo}.
5304 @item
5305 Interface with X-Symbol (>=2.6) is now complete and stable.
5306 @item
5307 Adapted to new outline, which uses overlays.
5308 @item
5309 File names in @code{\bibliography} may now have the @code{.bib}
5310 extension.@refill
5311 @item
5312 Fixed Bug with parsing "single file" from master file buffer.
5313 @end itemize
5315 @noindent @b{Version 3.25}
5316 @itemize @bullet
5317 @item
5318 Echoing of citation info caches the info for displayed entries.
5319 New option @code{reftex-cache-cite-echo}.@refill
5320 @item
5321 @kbd{M-x reftex-reset-mode} now also removes the file with parsing
5322 info.@refill
5323 @item
5324 Default of @code{reftex-revisit-to-follow} changed to nil.
5325 @end itemize
5327 @noindent @b{Version 3.26}
5328 @itemize @bullet
5329 @item
5330 [X]Emacs 19 no longer supported.  Use 3.22 for Emacs 19.
5331 @item
5332 New hooks @code{reftex-translate-to-ascii-function},
5333 @code{reftex-string-to-label-function}.@refill
5334 @item
5335 Made sure automatic crossref display will not visit/scan files.
5336 @end itemize
5338 @noindent @b{Version 3.27}
5339 @itemize @bullet
5340 @item
5341 Macros can define @emph{neutral} labels, just like @code{\label}
5342 itself.@refill
5343 @item
5344 New option @code{reftex-allow-detached-macro-args}, default @code{nil}!
5345 @end itemize
5347 @noindent @b{Version 3.28}
5348 @itemize @bullet
5349 @item
5350 Auto view crossref for XEmacs uses @code{post-command-hook} to restart the
5351 timer, since itimer restart is not reliable.@refill
5352 @item
5353 Option @code{reftex-bibfile-ignore-list} renamed to @code{-regexps}.
5354 @item
5355 Expansion of recursive tex and bib path rewritten.
5356 @item
5357 Fixed problem where @b{Ref@TeX{}} did not scan unsaved buffers.
5358 @item
5359 Fixed bug with section numbering after *-red sections.
5360 @end itemize
5362 @noindent @b{Version 3.30}
5363 @itemize @bullet
5364 @item
5365 In @code{reftex-citation}, the regular expression used to scan BibTeX
5366 files can be specified using completion on known citation keys.
5367 @item
5368 New keys @kbd{a} and @kbd{A} in BibTeX selection process to cite @emph{all}
5369 entries.
5370 @item
5371 New command @code{reftex-renumber-simple-labels} to renumber simple
5372 labels like @samp{eq:13} sequentially through a document.
5373 @end itemize
5374 @noindent @b{Version 3.33}
5375 @itemize @bullet
5376 @item
5377 Multiple selection buffers are now hidden buffers (they start with a
5378 SPACE).
5379 @item 
5380 Fixed bug with file search when TEXINPUTS environment variable is empty.
5381 @end itemize
5382 @noindent @b{Version 3.34}
5383 @itemize @bullet
5384 @item
5385 Additional flag in @code{reftex-derive-label-parameters} do make only
5386 lowercase labels (default @code{t}).
5387 @item
5388 All @file{.rel} files have a final newline to avoid queries.
5389 @item
5390 Single byte representations of accented European letters (ISO-8859-1)
5391 are now legal in labels.
5392 @end itemize
5393 @noindent @b{Version 3.35}
5394 @itemize @bullet
5395 @item
5396 ISO 8859 Latin-1 chars are converted to ASCII to derive better labels.
5397 This takes back the related changes in 3.34 for safety reasons.@refill
5398 @end itemize
5399 @noindent @b{Version 3.36}
5400 @itemize @bullet
5401 @item
5402 New value @code{window} for option @code{reftex-auto-view-crossref}.
5403 @end itemize
5404 @noindent @b{Version 3.38}
5405 @itemize @bullet
5406 @item
5407 @code{reftex-view-crossref} no longer moves to find a macro.  Point has
5408 to be on the macro argument.
5409 @end itemize
5410 @noindent @b{Version 3.41}
5411 @itemize @bullet
5412 @item
5413 New options @code{reftex-texpath-environment-variables},
5414 @code{reftex-use-external-file-finders}, 
5415 @code{reftex-external-file-finders}, 
5416 @code{reftex-search-unrecursed-path-first}. 
5417 @item
5418 @emph{kpathsearch} support.  See new options and
5419 @code{reftex-bibpath-environment-variables}.
5420 @end itemize
5421 @noindent @b{Version 3.42}
5422 @itemize @bullet
5423 @item
5424 File search further refined.  New option @code{reftex-file-extensions}.
5425 @item
5426 @file{*toc*} buffer can show the file boundaries of a multifile
5427 document, all labels and associated context.  New keys @kbd{i}, @kbd{l},
5428 and @kbd{c}.  New options @code{reftex-toc-include-labels},
5429 @code{reftex-toc-include-context},
5430 @code{reftex-toc-include-file-boundaries}. @refill
5431 @end itemize
5432 @noindent @b{Version 3.43}
5433 @itemize @bullet
5434 @item
5435 Viewing cross-references generalized.  Now works on @code{\label},
5436 @code{\ref}, @code{\cite}, @code{\bibitem}, @code{\index}, variations of
5437 these, and from BibTeX buffers.@refill
5438 @item
5439 New option @code{reftex-view-crossref-extra}.@refill
5440 @item
5441 Support for the additional sectioning commands @code{\addchap} and
5442 @code{\addsec} which are defined in the LaTeX KOMA-Script classes.@refill
5443 @item
5444 Files in @code{reftex-default-bibliography} will be searched along
5445 @code{BIBINPUTS} path.@refill
5446 @item
5447 Reading a parse file now checks consistency.
5448 @end itemize
5449 @noindent @b{Version 4.00}
5450 @itemize @bullet
5451 @item
5452 RefTeX has been split into several smaller files which are autoloaded on 
5453 demand.
5454 @item
5455 Index support, along with many new options.
5456 @item
5457 The selection of keys for @code{\ref} and @code{\cite} now allows to
5458 select multiple items by marking entries with the @kbd{m} key.
5459 @item
5460 Fancyref support.
5461 @end itemize
5462 @noindent @b{Version 4.01}
5463 @itemize @bullet
5464 @item
5465 New command @code{reftex-index-globally} to index a word in many
5466 places in the document.  Also available from the index buffer with
5467 @kbd{&}.
5468 @item
5469 The first item in a @code{reftex-label-alist} entry may now also be a parser
5470 function to do non-standard parsing.
5471 @item
5472 @code{reftex-auto-view-crossref} no longer interferes with
5473 @code{pop-up-frames} (patch from Stefan Monnier).
5474 @end itemize
5475 @noindent @b{Version 4.02}
5476 @itemize @bullet
5477 @item
5478 macros ending in @samp{refrange} are considered to contain references.
5479 @item
5480 Index entries made with @code{reftex-index-selection-or-word} in TeX
5481 math mode automatically get enclosing @samp{$} to preserve math mode.  See
5482 new option @code{reftex-index-math-format}.  Requires AUCTeX.
5483 @end itemize
5484 @noindent @b{Version 4.04}
5485 @itemize @bullet
5486 @item
5487 New option @code{reftex-index-default-tag} implements a default for queries.
5488 @end itemize
5489 @noindent @b{Version 4.06}
5490 @itemize @bullet
5491 @item
5492 @code{reftex-section-levels} can contain a function to compute the level
5493 of a sectioning command.
5494 @item
5495 Multiple @code{thebibliography} environments recognized.
5496 @end itemize
5497 @noindent @b{Version 4.09}
5498 @itemize @bullet
5499 @item
5500 New option @code{reftex-toc-max-level} to limit the depth of the toc.
5501 New key binding @kbd{t} in the @file{*toc*} buffer to change this
5502 setting.@refill 
5503 @item
5504 RefTeX maintains an @file{Index Phrases} file in which phrases can be 
5505 collected.  When the document is ready, RefTeX can search all
5506 these phrases and assist indexing all matches.@refill
5507 @item
5508 The variables @code{reftex-index-macros} and
5509 @code{reftex-index-default-macro} have changed their syntax slightly.
5510 The @var{repeat} parameter has move from the latter to the former.
5511 Also calls to @code{reftex-add-index-macros} from AUCTeX style files
5512 need to be adapted.@refill
5513 @item
5514 The variable @code{reftex-section-levels} no longer contains the
5515 default stuff which has been moved to a constant.@refill
5516 @item
5517 Environments like theorems can be placed into the TOC by putting
5518 entries for @samp{"begin@{theorem@}"} in
5519 @code{reftex-setion-levels}.@refill 
5520 @end itemize
5521 @noindent @b{Version 4.10}
5522 @itemize @bullet
5523 @item
5524 Renamed @file{reftex-vcr.el} to @file{reftex-dcr.el} because of conflict
5525 with @file{reftex-vars.el} on DOS machines.
5526 @item
5527 New options @code{reftex-parse-file-extension} and
5528 @code{reftex-index-phrase-file-extension}.
5529 @end itemize
5530 @noindent @b{Version 4.11}
5531 @itemize @bullet
5532 @item
5533 Fixed bug which would parse @samp{\Section} just like @samp{\section}.
5534 @end itemize
5535 @noindent @b{Version 4.12}
5536 @itemize @bullet
5537 @item
5538 Support for @file{bibentry} citation style.
5539 @end itemize
5540 @noindent @b{Version 4.15}
5541 @itemize @bullet
5542 @item
5543 Fixed bug with parsing of BibTeX files, when fields contain quotes or
5544 unmatched parenthesis.
5545 @item
5546 Small bug fixes.
5547 @item
5548 Improved interaction with Emacs LaTeX mode.
5549 @end itemize
5550 @end ignore
5551 @noindent @b{Version 4.17}
5552 @itemize @bullet
5553 @item 
5554 The toc window can be split off horizontally.  See new options
5555 @code{reftex-toc-split-windows-horizontally},
5556 @code{reftex-toc-split-windows-horizontally-fraction}.
5557 @item
5558 It is possible to specify a function which verifies an index match
5559 during global indexing.  See new option @code{reftex-index-verify-function}.
5560 @item
5561 The macros which input a file in LaTeX (like \input, \include) can
5562 be configured.  See new option @code{reftex-include-file-commands}.
5563 @item
5564 The macros which specify the bibliography file (like \bibliography) can
5565 be configured.  See new option @code{reftex-bibliography-commands}.
5566 @item
5567 The regular expression used to search for the \bibliography macro has
5568 been relaxed to allow for @samp{@{\bibliography@{...@}@}} needed by
5569 chapterbib.
5570 @item
5571 Small bug fixes.
5572 @end itemize
5573 @noindent @b{Version 4.18}
5574 @itemize @bullet
5575 @item
5576 @code{reftex-citation} uses the word before the cursor as a default
5577 search string.
5578 @item
5579 Simplified several regular expressions for speed.
5580 @item
5581 Better support for chapterbib.
5582 @end itemize
5583 @noindent @b{Version 4.19}
5584 @itemize @bullet
5585 @item
5586 New command `reftex-toc-recenter' (@kbd{C-c -}) which shows the current
5587 section in the TOC buffer without selecting the TOC window.
5588 @item
5589 Recentering happens automatically in idle time when the option
5590 @code{reftex-auto-recenter-toc} is turned on.
5591 @item
5592 Fixed several bugs related to automatic cursor positioning in the TOC
5593 buffer.
5594 @item
5595 The highlight in the TOC buffer stays when the focus moves to a
5596 different window.
5597 @item
5598 New command `reftex-goto-label'.
5599 @item
5600 Part numbers are no longer included in chapter numbers, and a new
5601 part does not reset the chapter counter.  See new option
5602 @code{reftex-part-resets-chapter}.
5603 @end itemize
5605 @node Index,  , , Top
5606 @unnumbered Index
5607 @printindex cp
5609 @summarycontents
5610 @contents
5611 @bye