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