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