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