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