Mercurial > emacs
changeset 84312:9502afe20dfd
Move here from ../../man
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 06 Sep 2007 05:01:53 +0000 |
parents | 1c709b7e1512 |
children | 0ae78db27d60 |
files | doc/misc/reftex.texi |
diffstat | 1 files changed, 5898 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/misc/reftex.texi Thu Sep 06 05:01:53 2007 +0000 @@ -0,0 +1,5898 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename ../info/reftex +@settitle RefTeX User Manual +@synindex ky cp +@syncodeindex vr cp +@syncodeindex fn cp + +@c Version and Contact Info +@set VERSION 4.31 +@set EDITION 4.31 +@set DATE February 2006 +@set AUCTEXSITE @uref{http://www.gnu.org/software/auctex/,AUCTeX distribution site} +@set MAINTAINERSITE @uref{http://www.gnu.org/software/auctex/reftex.html,Ref@TeX{} web page} +@set MAINTAINERCONTACT @uref{mailto:auctex-devel@@gnu.org,contact the maintainers} +@set MAINTAINER the AUC@TeX{} project +@set SUPPORTADDRESS AUC@TeX{} user mailing list (@email{auctex@@gnu.org}) +@set DEVELADDRESS AUC@TeX{} developer mailing list (@email{auctex-devel@@gnu.org}) +@set BUGADDRESS AUC@TeX{} bug mailing list (@email{bug-auctex@@gnu.org}) +@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site} +@c %**end of header + +@copying +This file documents @b{Ref@TeX{}}, a package to do labels, references, +citations and indices for LaTeX documents with Emacs. + +This is edition @value{EDITION} of the @b{Ref@TeX{}} User Manual for +@b{Ref@TeX{}} @value{VERSION} + +Copyright @copyright{} 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +2005, 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end quotation +@end copying + +@dircategory Emacs +@direntry +* RefTeX: (reftex). Emacs support for LaTeX cross-references and citations. +@end direntry + +@finalout + +@c Macro definitions + +@c Subheadings inside a table. Need a difference between info and the rest. +@macro tablesubheading{text} +@ifinfo +@subsubheading \text\ +@end ifinfo +@ifnotinfo +@item @b{\text\} +@end ifnotinfo +@end macro + +@titlepage +@title Ref@TeX{} User Manual +@subtitle Support for LaTeX labels, references, citations and index entries with GNU Emacs +@subtitle Edition @value{EDITION}, @value{DATE} + +@author by Carsten Dominik +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@ifnottex +@node Top,,,(dir) + +@b{Ref@TeX{}} is a package for managing Labels, References, +Citations and index entries with GNU Emacs. + +Don't be discouraged by the size of this manual, which covers +@b{Ref@TeX{}} in great depth. All you need to know to use +@b{Ref@TeX{}} can be summarized on two pages (@pxref{RefTeX in a +Nutshell}). You can go back later to other parts of this document when +needed. + +@menu +* Introduction:: Quick-Start information. + +* Table of Contents:: A Tool to move around quickly. +* Labels and References:: Creating and referencing labels. +* Citations:: Creating Citations. +* Index Support:: Creating and Checking Index Entries. +* Viewing Cross-References:: Who references or cites what? + +* RefTeXs Menu:: The Ref menu in the menubar. +* Key Bindings:: The default key bindings. +* Faces:: Fontification of RefTeX's buffers. +* Multifile Documents:: Document spread over many files. +* Language Support:: How to support other languages. +* Finding Files:: Included TeX files and BibTeX .bib files. +* AUCTeX:: Cooperation with AUCTeX. +* Optimizations:: When RefTeX is too slow. +* Problems and Work-Arounds:: First Aid. +* Imprint:: Author, Web-site, Thanks + +* Commands:: Which are the available commands. +* Options:: How to extend and configure RefTeX. +* Keymaps and Hooks:: For customization. +* Changes:: A List of recent changes to RefTeX. +* GNU Free Documentation License:: The license for this documentation. + +The Index + +* Index:: The full index. + +@detailmenu + +Introduction + +* Installation:: How to install and activate RefTeX. +* RefTeX in a Nutshell:: A brief summary and quick guide. + +Labels and References + +* Creating Labels:: +* Referencing Labels:: +* Builtin Label Environments:: The environments RefTeX knows about. +* Defining Label Environments:: ... and environments it doesn't. +* Reference Info:: View the label corresponding to a \ref. +* xr (LaTeX package):: References to external documents. +* varioref (LaTeX package):: How to create \vref instead of \ref. +* fancyref (LaTeX package):: How to create \fref instead of \ref. + +Defining Label Environments + +* Theorem and Axiom:: Defined with @code{\newenvironment}. +* Quick Equation:: When a macro sets the label type. +* Figure Wrapper:: When a macro argument is a label. +* Adding Magic Words:: Other words for other languages. +* Using \eqref:: How to switch to this AMS-LaTeX macro. +* Non-Standard Environments:: Environments without \begin and \end +* Putting it Together:: How to combine many entries. + +Citations + +* Creating Citations:: How to create them. +* Citation Styles:: Natbib, Harvard, Chicago and Co. +* Citation Info:: View the corresponding database entry. +* Chapterbib and Bibunits:: Multiple bibliographies in a Document. +* Citations Outside LaTeX:: How to make citations in Emails etc. +* BibTeX Database Subsets:: Extract parts of a big database. + +Index Support + +* Creating Index Entries:: Macros and completion of entries. +* The Index Phrases File:: A special file for global indexing. +* Displaying and Editing the Index:: The index editor. +* Builtin Index Macros:: The index macros RefTeX knows about. +* Defining Index Macros:: ... and macros it doesn't. + +The Index Phrases File + +* Collecting Phrases:: Collecting from document or external. +* Consistency Checks:: Check for duplicates etc. +* Global Indexing:: The interactive indexing process. + +AUCTeX + +* AUCTeX-RefTeX Interface:: How both packages work together +* Style Files:: AUCTeX's style files can support RefTeX +* Bib-Cite:: Hypertext reading of a document + +Options, Keymaps, Hooks + +* Options (Table of Contents):: +* Options (Defining Label Environments):: +* Options (Creating Labels):: +* Options (Referencing Labels):: +* Options (Creating Citations):: +* Options (Index Support):: +* Options (Viewing Cross-References):: +* Options (Finding Files):: +* Options (Optimizations):: +* Options (Fontification):: +* Options (Misc):: + +@end detailmenu +@end menu + +@end ifnottex + +@node Introduction, Table of Contents, , Top +@chapter Introduction +@cindex Introduction + +@b{Ref@TeX{}} is a specialized package for support of labels, +references, citations, and the index in LaTeX. @b{Ref@TeX{}} wraps +itself round 4 LaTeX macros: @code{\label}, @code{\ref}, @code{\cite}, +and @code{\index}. Using these macros usually requires looking up +different parts of the document and searching through BibTeX database +files. @b{Ref@TeX{}} automates these time--consuming tasks almost +entirely. It also provides functions to display the structure of a +document and to move around in this structure quickly. + +@iftex +Don't be discouraged by the size of this manual, which covers @b{Ref@TeX{}} +in great depth. All you need to know to use @b{Ref@TeX{}} can be +summarized on two pages (@pxref{RefTeX in a Nutshell}). You can go +back later to other parts of this document when needed. +@end iftex + +@xref{Imprint}, for information about who to contact for help, bug +reports or suggestions. + +@menu +* Installation:: How to install and activate RefTeX. +* RefTeX in a Nutshell:: A brief summary and quick guide. +@end menu + +@node Installation, RefTeX in a Nutshell, , Introduction +@section Installation +@cindex Installation + +@b{Ref@TeX{}} is bundled and pre--installed with Emacs since version +20.2. It was also bundled and pre--installed with XEmacs 19.16--20.x. +XEmacs 21.x users want to install the corresponding plug-in package +which is available from the @value{XEMACSFTP}. See the XEmacs 21.x +documentation on package installation for details. + +Users of earlier Emacs distributions (including Emacs 19) can get a copy +of the @b{Ref@TeX{}} distribution from the maintainers web-page. +@xref{Imprint}, for more information. + +@section Environment +@cindex Finding files +@cindex BibTeX database files, not found +@cindex TeX files, not found +@cindex @code{TEXINPUTS}, environment variable +@cindex @code{BIBINPUTS}, environment variable + +@b{Ref@TeX{}} needs to access all files which are part of a multifile +document, and the BibTeX database files requested by the +@code{\bibliography} command. To find these files, @b{Ref@TeX{}} will +require a search path, i.e. a list of directories to check. Normally +this list is stored in the environment variables @code{TEXINPUTS} and +@code{BIBINPUTS} which are also used by @b{Ref@TeX{}}. However, on some +systems these variables do not contain the full search path. If +@b{Ref@TeX{}} does not work for you because it cannot find some files, +read @ref{Finding Files}. + +@section Entering @b{Ref@TeX{}} Mode + +@findex turn-on-reftex +@findex reftex-mode +@vindex LaTeX-mode-hook +@vindex latex-mode-hook +To turn @b{Ref@TeX{}} Mode on and off in a particular buffer, use +@kbd{M-x reftex-mode}. To turn on @b{Ref@TeX{}} Mode for all LaTeX +files, add the following lines to your @file{.emacs} file: + +@example +(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode +(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode +@end example + +@page +@node RefTeX in a Nutshell, , Installation, Introduction +@section @b{Ref@TeX{}} in a Nutshell +@cindex Quick-Start +@cindex Getting Started +@cindex RefTeX in a Nutshell +@cindex Nutshell, RefTeX in a + +@enumerate +@item +@b{Table of Contents}@* Typing @kbd{C-c =} (@code{reftex-toc}) will show +a table of contents of the document. This buffer can display sections, +labels and index entries defined in the document. From the buffer, you +can jump quickly to every part of your document. Press @kbd{?} to get +help. + +@item +@b{Labels and References}@* @b{Ref@TeX{}} helps to create unique labels +and to find the correct key for references quickly. It distinguishes +labels for different environments, knows about all standard +environments (and many others), and can be configured to recognize any +additional labeled environments you have defined yourself (variable +@code{reftex-label-alist}). + +@itemize @bullet +@item +@b{Creating Labels}@* +Type @kbd{C-c (} (@code{reftex-label}) to insert a label at point. +@b{Ref@TeX{}} will either +@itemize @minus +@item +derive a label from context (default for section labels) +@item +prompt for a label string (default for figures and tables) or +@item +insert a simple label made of a prefix and a number (all other +environments) +@end itemize +@noindent +Which labels are created how is configurable with the variable +@code{reftex-insert-label-flags}. + +@item +@b{Referencing Labels}@* To make a reference, type @kbd{C-c )} +(@code{reftex-reference}). This shows an outline of the document with +all labels of a certain type (figure, equation,...) and some label +context. Selecting a label inserts a @code{\ref@{@var{label}@}} macro +into the original buffer. +@end itemize + +@item +@b{Citations}@* +Typing @kbd{C-c [} (@code{reftex-citation}) will let you specify a +regular expression to search in current BibTeX database files (as +specified in the @code{\bibliography} command) and pull out a list of +matches for you to choose from. The list is @emph{formatted} and +sorted. The selected article is referenced as @samp{\cite@{@var{key}@}} +(see the variable @code{reftex-cite-format} if you want to insert +different macros). + +@item +@b{Index Support}@* +@b{Ref@TeX{}} helps to enter index entries. It also compiles all +entries into an alphabetically sorted @file{*Index*} buffer which you +can use to check and edit the entries. @b{Ref@TeX{}} knows about the +standard index macros and can be configured to recognize any additional +macros you have defined (@code{reftex-index-macros}). Multiple indices +are supported. + +@itemize @bullet +@item +@b{Creating Index Entries}@* +To index the current selection or the word at point, type @kbd{C-c /} +(@code{reftex-index-selection-or-word}). The default macro +@code{reftex-index-default-macro} will be used. For a more complex entry +type @kbd{C-c <} (@code{reftex-index}), select any of the index macros +and enter the arguments with completion. + +@item +@b{The Index Phrases File (Delayed Indexing)}@* +Type @kbd{C-c \} (@code{reftex-index-phrase-selection-or-word}) to add +the current word or selection to a special @emph{index phrase file}. +@b{Ref@TeX{}} can later search the document for occurrences of these +phrases and let you interactively index the matches. + +@item +@b{Displaying and Editing the Index}@* +To display the compiled index in a special buffer, type @kbd{C-c >} +(@code{reftex-display-index}). From that buffer you can check and edit +all entries. +@end itemize + +@page +@item @b{Viewing Cross-References}@* +When point is on the @var{key} argument of a cross--referencing macro +(@code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem}, +@code{\index}, and variations) or inside a BibTeX database entry, you +can press @kbd{C-c &} (@code{reftex-view-crossref}) to display +corresponding locations in the document and associated BibTeX database +files. @* +When the enclosing macro is @code{\cite} or @code{\ref} and no other +message occupies the echo area, information about the citation or label +will automatically be displayed in the echo area. + +@item +@b{Multifile Documents}@* +Multifile Documents are fully supported. The included files must have a +file variable @code{TeX-master} or @code{tex-main-file} pointing to the +master file. @b{Ref@TeX{}} provides cross-referencing information from +all parts of the document, and across document borders +(@file{xr.sty}). + +@item +@b{Document Parsing}@* @b{Ref@TeX{}} needs to parse the document in +order to find labels and other information. It does it automatically +once and updates its list internally when @code{reftex-label} and +@code{reftex-index} are used. To enforce reparsing, call any of the +commands described above with a raw @kbd{C-u} prefix, or press the +@kbd{r} key in the label selection buffer, the table of contents +buffer, or the index buffer. + +@item +@b{AUCTeX} @* If your major LaTeX mode is AUCTeX, @b{Ref@TeX{}} can +cooperate with it (see variable @code{reftex-plug-into-AUCTeX}). AUCTeX +contains style files which trigger appropriate settings in +@b{Ref@TeX{}}, so that for many of the popular LaTeX packages no +additional customizations will be necessary. + +@item +@b{Useful Settings}@* +To integrate RefTeX with AUCTeX, use +@lisp +(setq reftex-plug-into-AUCTeX t) +@end lisp + +To make your own LaTeX macro definitions known to @b{Ref@TeX{}}, +customize the variables +@example +@code{reftex-label-alist} @r{(for label macros/environments)} +@code{reftex-section-levels} @r{(for sectioning commands)} +@code{reftex-cite-format} @r{(for @code{\cite}-like macros)} +@code{reftex-index-macros} @r{(for @code{\index}-like macros)} +@code{reftex-index-default-macro} @r{(to set the default macro)} +@end example +If you have a large number of macros defined, you may want to write +an AUCTeX style file to support them with both AUCTeX and +@b{Ref@TeX{}}. + +@item @b{Where Next?}@* Go ahead and use @b{Ref@TeX{}}. Use its menus +until you have picked up the key bindings. For an overview of what you +can do in each of the different special buffers, press @kbd{?}. Read +the manual if you get stuck, of if you are curious what else might be +available. The first part of the manual explains in +a tutorial way how to use and customize @b{Ref@TeX{}}. The second +part is a command and variable reference. +@end enumerate + +@node Table of Contents, Labels and References, Introduction, Top +@chapter Table of Contents +@cindex @file{*toc*} buffer +@cindex Structure editing +@cindex Table of contents buffer +@findex reftex-toc +@kindex C-c = + +Pressing the keys @kbd{C-c =} pops up a buffer showing the table of +contents of the document. By default, this @file{*toc*} buffer shows +only the sections of a document. Using the @kbd{l} and @kbd{i} keys you +can display all labels and index entries defined in the document as +well. + +With the cursor in any of the lines denoting a location in the +document, simple key strokes will display the corresponding part in +another window, jump to that location, or perform other actions. + +@kindex ? +Here is a list of special commands in the @file{*toc*} buffer. A +summary of this information is always available by pressing +@kbd{?}. + +@table @kbd + +@tablesubheading{General} +@item ? +Display a summary of commands. + +@item 0-9, - +Prefix argument. + +@tablesubheading{Moving around} +@item n +Goto next entry in the table of context. + +@item p +Goto previous entry in the table of context. + +@item C-c C-n +Goto next section heading. Useful when many labels and index entries +separate section headings. + +@item C-c C-p +Goto previous section heading. + +@item N z +Jump to section N, using the prefix arg. For example, @kbd{3 z} jumps +to section 3. + +@tablesubheading{Access to document locations} +@item @key{SPC} +Show the corresponding location in another window. This command does +@emph{not} select that other window. + +@item @key{TAB} +Goto the location in another window. + +@item @key{RET} +Go to the location and hide the @file{*toc*} buffer. This will restore +the window configuration before @code{reftex-toc} (@kbd{C-c =}) was +called. + +@item mouse-2 +@vindex reftex-highlight-selection +Clicking with mouse button 2 on a line has the same effect as @key{RET}. +See also variable @code{reftex-highlight-selection}, @ref{Options +(Fontification)}. + +@item f +@vindex reftex-toc-follow-mode +@vindex reftex-revisit-to-follow +Toggle follow mode. When follow mode is active, the other window will +always show the location corresponding to the line at point in the +@file{*toc*} buffer. This is similar to pressing @key{SPC} after each +cursor motion. The default for this flag can be set with the variable +@code{reftex-toc-follow-mode}. Note that only context in files already +visited is shown. @b{Ref@TeX{}} will not visit a file just for follow +mode. See, however, the variable +@code{reftex-revisit-to-follow}. + +@item . +Show calling point in another window. This is the point from where +@code{reftex-toc} was last called. + +@page +@tablesubheading{Promotion and Demotion} + +@item < +Promote the current section. This will convert @code{\section} to +@code{\chapter}, @code{\subsection} to @code{\section} etc. If there is +an active region, all sections in the region will be promoted, including +the one at point. To avoid mistakes, @b{Ref@TeX{}} requires a fresh +document scan before executing this command - if necessary, it will +automatically do this scan and ask the user to repeat the promotion +command. + +@item > +Demote the current section. This is the opposite of promotion. It will +convert @code{\chapter} to @code{\section} etc. If there is an active +region, all sections in the region will be demoted, including the one at +point. + +@item M-% +Rename the label at point. While generally not recommended, this can be +useful when a package like @file{fancyref} is used where the label +prefix determines the wording of a reference. After a +promotion/demotion it may be necessary to change a few labels from +@samp{sec:xyz} to @samp{cha:xyz} or vice versa. This command can be +used to do this - it launches a query replace to rename the definition +and all references of a label. + +@tablesubheading{Exiting} +@item q +Hide the @file{*toc*} buffer, return to the position where +@code{reftex-toc} was last called. + +@item k +Kill the @file{*toc*} buffer, return to the position where +@code{reftex-toc} was last called. + +@item C-c > +Switch to the @file{*Index*} buffer of this document. With prefix +@samp{2}, restrict the index to the section at point in the @file{*toc*} +buffer. + +@tablesubheading{Controlling what gets displayed} + +@item t +@vindex reftex-toc-max-level +Change the maximum level of toc entries displayed in the @file{*toc*} +buffer. Without prefix arg, all levels will be included. With prefix +arg (e.g @kbd{3 t}), ignore all toc entries with level greater than +@var{arg} (3 in this case). Chapters are level 1, sections are level 2. +The mode line @samp{T<>} indicator shows the current value. The default +depth can be configured with the variable +@code{reftex-toc-max-level}. + +@item F +@vindex reftex-toc-include-file-boundaries +Toggle the display of the file borders of a multifile document in the +@file{*toc*} buffer. The default for this flag can be set with the +variable @code{reftex-toc-include-file-boundaries}. + +@item l +@vindex reftex-toc-include-labels +Toggle the display of labels in the @file{*toc*} buffer. The default +for this flag can be set with the variable +@code{reftex-toc-include-labels}. When called with a prefix argument, +@b{Ref@TeX{}} will prompt for a label type and include only labels of +the selected type in the @file{*toc*} buffer. The mode line @samp{L<>} +indicator shows which labels are included. + +@item i +@vindex reftex-toc-include-index-entries +Toggle the display of index entries in the @file{*toc*} buffer. The +default for this flag can be set with the variable +@code{reftex-toc-include-index-entries}. When called with a prefix +argument, @b{Ref@TeX{}} will prompt for a specific index and include +only entries in the selected index in the @file{*toc*} buffer. The mode +line @samp{I<>} indicator shows which index is used. + +@item c +@vindex reftex-toc-include-context +Toggle the display of label and index context in the @file{*toc*} +buffer. The default for this flag can be set with the variable +@code{reftex-toc-include-context}. + +@tablesubheading{Updating the buffer} + +@item g +Rebuild the @file{*toc*} buffer. This does @emph{not} rescan the +document. + +@item r +@vindex reftex-enable-partial-scans +Reparse the LaTeX document and rebuild the @file{*toc*} buffer. When +@code{reftex-enable-partial-scans} is non-@code{nil}, rescan only the file this +location is defined in, not the entire document. + +@item C-u r +Reparse the @emph{entire} LaTeX document and rebuild the @file{*toc*} +buffer. + +@item x +Switch to the @file{*toc*} buffer of an external document. When the +current document is using the @code{xr} package (@pxref{xr (LaTeX +package)}), @b{Ref@TeX{}} will switch to one of the external +documents. + + +@tablesubheading{Automatic recentering} + +@item d +Toggle the display of a dedicated frame displaying just the @file{*toc*} +buffer. Follow mode and visiting locations will not work that frame, +but automatic recentering will make this frame always show your current +editing location in the document (see below). + +@item a +Toggle the automatic recentering of the @file{*toc*} buffer. When this +option is on, moving around in the document will cause the @file{*toc*} +to always highlight the current section. By default, this option is +active while the dedicated @file{*TOC*} frame exists. See also the +variable @code{reftex-auto-recenter-toc}. + +@end table + +@vindex reftex-toc-map +In order to define additional commands for the @file{*toc*} buffer, the +keymap @code{reftex-toc-map} may be used. + +@findex reftex-toc-recenter +@vindex reftex-auto-recenter-toc +@vindex reftex-idle-time +@cindex @file{*toc*} buffer, recentering +@cindex Table of contents buffer, recentering +@kindex C-c - +If you call @code{reftex-toc} while the @file{*toc*} buffer already +exists, the cursor will immediately jump to the right place, i.e. the +section from which @code{reftex-toc} was called will be highlighted. +The command @kbd{C-c -} (@code{reftex-toc-recenter}) will only redisplay +the @file{*toc*} buffer and highlight the correct line without actually +selecting the @file{*toc*} window. This can be useful to quickly find +out where in the document you currently are. You can also automate this +by asking RefTeX to keep track of your current editing position in the +TOC. The TOC window will then be updated whenever you stop typing for +more than @code{reftex-idle-time} seconds. By default this works only +with the dedicated @file{*TOC*} frame. But you can also force automatic +recentering of the TOC window on the current frame with +@lisp +(setq reftex-auto-recenter-toc t) +@end lisp + + +@cindex Sectioning commands +@cindex KOMA-Script, LaTeX classes +@cindex LaTeX classes, KOMA-Script +@cindex TOC entries for environments +@vindex reftex-section-levels +The section macros recognized by @b{Ref@TeX{}} are all LaTeX section +macros (from @code{\part} to @code{\subsubparagraph}) and the commands +@code{\addchap} and @code{\addsec} from the KOMA-Script classes. +Additional macros can be configured with the variable +@code{reftex-section-levels}. It is also possible to add certain LaTeX +environments to the table of contents. This is probably only useful for +theorem-like environments. @xref{Defining Label Environments}, for an +example. + +@node Labels and References, Citations, Table of Contents, Top +@chapter Labels and References +@cindex Labels in LaTeX +@cindex References in LaTeX +@cindex Label category +@cindex Label environment +@cindex @code{\label} + +LaTeX provides a powerful mechanism to deal with cross--references in a +document. When writing a document, any part of it can be marked with a +label, like @samp{\label@{mark@}}. LaTeX records the current value of a +certain counter when a label is defined. Later references to this label +(like @samp{\ref@{mark@}}) will produce the recorded value of the +counter. + +Labels can be used to mark sections, figures, tables, equations, +footnotes, items in enumerate lists etc. LaTeX is context sensitive in +doing this: A label defined in a figure environment automatically +records the figure counter, not the section counter. + +Several different environments can share a common counter and therefore +a common label category. E.g. labels in both @code{equation} and +@code{eqnarray} environments record the value of the same counter - the +equation counter. + +@menu +* Creating Labels:: +* Referencing Labels:: +* Builtin Label Environments:: The environments RefTeX knows about. +* Defining Label Environments:: ... and environments it doesn't. +* Reference Info:: View the label corresponding to a \ref. +* xr (LaTeX package):: References to external documents. +* varioref (LaTeX package):: How to create \vref instead of \ref. +* fancyref (LaTeX package):: How to create \fref instead of \ref. +@end menu + +@node Creating Labels, Referencing Labels, , Labels and References +@section Creating Labels +@cindex Creating labels +@cindex Labels, creating +@cindex Labels, deriving from context +@kindex C-c ( +@findex reftex-label + +In order to create a label in a LaTeX document, press @kbd{C-c (} +(@code{reftex-label}). Just like LaTeX, @b{Ref@TeX{}} is context sensitive +and will figure out the environment it currently is in and adapt the +label to that environment. A label usually consists of a short prefix +indicating the type of the label and a unique mark. @b{Ref@TeX{}} has +3 different modes to create this mark. + +@enumerate +@item +@vindex reftex-translate-to-ascii-function +@vindex reftex-derive-label-parameters +@vindex reftex-label-illegal-re +@vindex reftex-abbrev-parameters +A label can be derived from context. This means, @b{Ref@TeX{}} takes +the context of the label definition and constructs a label from +that@footnote{Note that the context may contain constructs which are +invalid in labels. @b{Ref@TeX{}} will therefore strip the accent from +accented Latin-1 characters and remove everything else which is not +valid in labels. This mechanism is safe, but may not be satisfactory +for non-western languages. Check the following variables if you need to +change things: @code{reftex-translate-to-ascii-function}, +@code{reftex-derive-label-parameters}, @code{reftex-label-illegal-re}, +@code{reftex-abbrev-parameters}.}. This works best for section labels, +where the section heading is used to construct a label. In fact, +@b{Ref@TeX{}}'s default settings use this method only for section +labels. You will be asked to confirm the derived label, or edit +it. + +@item +We may also use a simple unique number to identify a label. This is +mostly useful for labels where it is difficult to come up with a very +good descriptive name. @b{Ref@TeX{}}'s default settings use this method +for equations, enumerate items and footnotes. The author of @b{Ref@TeX{}} +tends to write documents with many equations and finds it impossible +to come up with good names for each of them. These simple labels are +inserted without query, and are therefore very fast. Good descriptive +names are not really necessary as @b{Ref@TeX{}} will provide context to +reference a label (@pxref{Referencing Labels}). + +@item +The third method is to ask the user for a label. This is most +useful for things which are easy to describe briefly and do not turn up +too frequently in a document. @b{Ref@TeX{}} uses this for figures and +tables. Of course, one can enter the label directly by typing the full +@samp{\label@{mark@}}. The advantage of using @code{reftex-label} +anyway is that @b{Ref@TeX{}} will know that a new label has been defined. +It will then not be necessary to rescan the document in order to access +this label later. +@end enumerate + +@vindex reftex-insert-label-flags +If you want to change the way certain labels are created, check out the +variable @code{reftex-insert-label-flags} (@pxref{Options (Creating +Labels)}). + +If you are using AUCTeX to write your LaTeX documents, you can +set it up to delegate the creation of labels to +@b{Ref@TeX{}}. @xref{AUCTeX}, for more information. + +@node Referencing Labels, Builtin Label Environments, Creating Labels, Labels and References +@section Referencing Labels +@cindex Referencing labels +@cindex Labels, referencing +@cindex Selection buffer, labels +@cindex Selection process +@cindex @code{\ref} +@kindex C-c ) +@findex reftex-reference + +@vindex reftex-trust-label-prefix +@b{Ref@TeX{}} scans the document in order to find all labels. To make +referencing labels easier, it assigns to each label a category, the +@emph{label type} (for example section, table, figure, equation, etc.). +In order to determine the label type, RefTeX parses around each label +to see in what kind of environments it is located. You can speed up +the parsing by using type-specific prefixes for labels and configuring +the variable @code{reftex-trust-label-prefix}. + +Referencing Labels is really at the heart of @b{Ref@TeX{}}. Press @kbd{C-c +)} in order to reference a label (reftex-reference). This will start a +selection process and finally insert the complete @samp{\ref@{label@}} +into the buffer. + +First, @b{Ref@TeX{}} will determine the label category which is required. +Often that can be figured out from context. For example, if you +write @samp{As shown in eq.} and the press @kbd{C-c )}, @b{Ref@TeX{}} knows +that an equation label is going to be referenced. If it cannot figure +out what label category is needed, it will query for one. + +You will then be presented with a label selection menu. This is a +special buffer which contains an outline of the document along with all +labels of the given label category. In addition, next to the label +there will be one line of context of the label definition, which is some +text in the buffer near the label definition. Usually this is +sufficient to identify the label. If you are unsure about a certain +label, pressing @key{SPC} will show the label definition point in +another window. + +In order to reference a label, move to cursor to the correct label and +press @key{RET}. You can also reference several labels with a single +call to @code{reftex-reference} by marking entries with the @kbd{m} +key (see below). + +@kindex ? +Here is a list of special commands in the selection buffer. A summary +of this information is always available from the selection process by +pressing @kbd{?}. + + + +@table @kbd +@tablesubheading{General} +@item ? +Show a summary of available commands. + +@item 0-9,- +Prefix argument. + +@tablesubheading{Moving around} +@item n +Go to next label. + +@item p +Go to previous label. + +@item b +Jump back to the position where you last left the selection buffer. +Normally this should get you back to the last referenced label. + +@item C-c C-n +Goto next section heading. + +@item C-c C-p +Goto previous section heading. + +@item N z +Jump to section N, using the prefix arg. For example @kbd{3 z} jumps to +section 3. + +@tablesubheading{Displaying Context} +@item @key{SPC} +Show the surroundings of the definition of the current label in another +window. See also the @kbd{f} key. + +@item f +@vindex reftex-revisit-to-follow +Toggle follow mode. When follow mode is active, the other window will +always display the full context of the current label. This is similar +to pressing @key{SPC} after each cursor motion. Note that only context +in files already visited is shown. @b{RefTeX} will not visit a file +just for follow mode. See, however, the variable +@code{reftex-revisit-to-follow}. + +@item . +Show insertion point in another window. This is the point from where you +called @code{reftex-reference}. + +@tablesubheading{Selecting a label and creating the reference} +@item @key{RET} +Insert a reference to the label at point into the buffer from which the +selection process was started. When entries have been marked, @key{RET} +references all marked labels. + +@item mouse-2 +@vindex reftex-highlight-selection +Clicking with mouse button 2 on a label will accept it like @key{RET} +would. See also variable @code{reftex-highlight-selection}, @ref{Options +(Misc)}. + +@vindex reftex-multiref-punctuation +@item m - + , +Mark the current entry. When several entries have been marked, pressing +@kbd{RET} will accept all of them and place them into several +@code{\ref} macros. The special markers @samp{,-+} also store a +separator to be inserted before the corresponding reference. So marking +six entries with the keys @samp{m , , - , +} will give a reference list +like this (see the variable @code{reftex-multiref-punctuation}) +@example +In eqs. (1), (2), (3)--(4), (5) and (6) +@end example + +@item u +Unmark a marked entry. + +@c FIXME: Do we need `A' as well for consistency? +@cindex LaTeX packages, @code{saferef} +@cindex @code{saferef}, LaTeX package +@item a +Accept the marked entries and put all labels as a comma-separated list +into one @emph{single} @code{\ref} macro. Some packages like +@file{saferef.sty} support multiple references in this way. + +@item l +Use the last referenced label(s) again. This is equivalent to moving to +that label and pressing @key{RET}. + +@item @key{TAB} +Enter a label with completion. This may also be a label which does not +yet exist in the document. + +@item v +@cindex @code{varioref}, LaTeX package +@cindex @code{\vref} +@cindex LaTeX packages, @code{varioref} +Toggle between @code{\ref} and @code{\vref} macro for references. The +@code{\vref} macro is defined in the @code{varioref} LaTeX package. +With this key you can force @b{Ref@TeX{}} to insert a @code{\vref} +macro. The current state of this flag is displayed by the @samp{S<>} +indicator in the mode line of the selection buffer. + +@item V +@cindex @code{fancyref}, LaTeX package +@cindex @code{\fref} +@cindex @code{\Fref} +@cindex LaTeX packages, @code{fancyref} +Cycle between @code{\ref}, @code{\fref} and @code{\Fref}. The +@code{\fref} and @code{\Fref} macros are defined in the @code{fancyref} +LaTeX package. With this key you can force @b{Ref@TeX{}} to insert a +@code{\fref} or @code{\Fref} macro. The current state of this flag is +displayed by the @samp{S<>} indicator in the mode line of the +selection buffer. + +@tablesubheading{Exiting} + +@item q +Exit the selection process without inserting any reference into the +buffer. + +@tablesubheading{Controlling what gets displayed} +@vindex reftex-label-menu-flags +The defaults for the following flags can be configured with the variable +@code{reftex-label-menu-flags} (@pxref{Options (Referencing Labels)}). + +@item c +Toggle the display of the one-line label definition context in the +selection buffer. + +@item F +Toggle the display of the file borders of a multifile document in the +selection buffer. + +@item t +Toggle the display of the table of contents in the selection buffer. +With prefix @var{arg}, change the maximum level of toc entries displayed +to @var{arg}. Chapters are level 1, section are level 2. + +@item # +Toggle the display of a label counter in the selection buffer. + +@item % +Toggle the display of labels hidden in comments in the selection +buffers. Sometimes, you may have commented out parts of your document. +If these parts contain label definitions, @b{Ref@TeX{}} can still display +and reference these labels. + +@tablesubheading{Updating the buffer} +@item g +Update the menu. This will rebuilt the menu from the internal label +list, but not reparse the document (see @kbd{r}). + +@item r +@vindex reftex-enable-partial-scans +Reparse the document to update the information on all labels and rebuild +the menu. If the variable @code{reftex-enable-partial-scans} is +non-@code{nil} and your document is a multifile document, this will +reparse only a part of the document (the file in which the label at +point was defined). + +@item C-u r +Reparse the @emph{entire} document. + +@item s +Switch the label category. After prompting for another label category, +a menu for that category will be shown. + +@item x +Reference a label from an external document. With the LaTeX package +@code{xr} it is possible to reference labels defined in another +document. This key will switch to the label menu of an external +document and let you select a label from there (@pxref{xr (LaTeX +package),,xr}). + +@end table + +@vindex reftex-select-label-map +In order to define additional commands for the selection process, the +keymap @code{reftex-select-label-map} may be used. + +@node Builtin Label Environments, Defining Label Environments, Referencing Labels, Labels and References +@section Builtin Label Environments +@cindex Builtin label environments +@cindex Label environments, builtin +@cindex Environments, builtin +@vindex reftex-label-alist +@vindex reftex-label-alist-builtin + +@b{Ref@TeX{}} needs to be aware of the environments which can be referenced +with a label (i.e. which carry their own counters). By default, @b{Ref@TeX{}} +recognizes all labeled environments and macros discussed in @cite{The +LaTeX Companion by Goossens, Mittelbach & Samarin, Addison-Wesley +1994.}. These are: + +@itemize @minus +@item +@cindex @code{figure}, LaTeX environment +@cindex @code{figure*}, LaTeX environment +@cindex @code{table}, LaTeX environment +@cindex @code{table*}, LaTeX environment +@cindex @code{equation}, LaTeX environment +@cindex @code{eqnarray}, LaTeX environment +@cindex @code{enumerate}, LaTeX environment +@cindex @code{\footnote}, LaTeX macro +@cindex LaTeX macro @code{footnote} +@cindex LaTeX core +@code{figure}, @code{figure*}, @code{table}, @code{table*}, @code{equation}, +@code{eqnarray}, @code{enumerate}, the @code{\footnote} macro (this is +the LaTeX core stuff) +@item +@cindex AMS-LaTeX +@cindex @code{amsmath}, LaTeX package +@cindex LaTeX packages, @code{amsmath} +@cindex @code{align}, AMS-LaTeX environment +@cindex @code{gather}, AMS-LaTeX environment +@cindex @code{multline}, AMS-LaTeX environment +@cindex @code{flalign}, AMS-LaTeX environment +@cindex @code{alignat}, AMS-LaTeX environment +@cindex @code{xalignat}, AMS-LaTeX environment +@cindex @code{xxalignat}, AMS-LaTeX environment +@cindex @code{subequations}, AMS-LaTeX environment +@code{align}, @code{gather}, @code{multline}, @code{flalign}, +@code{alignat}, @code{xalignat}, @code{xxalignat}, @code{subequations} +(from AMS-LaTeX's @file{amsmath.sty} package) +@item +@cindex @code{endnote}, LaTeX package +@cindex LaTeX packages, @code{endnote} +@cindex @code{\endnote}, LaTeX macro +the @code{\endnote} macro (from @file{endnotes.sty}) +@item +@cindex @code{fancybox}, LaTeX package +@cindex LaTeX packages, @code{fancybox} +@cindex @code{Beqnarray}, LaTeX environment +@code{Beqnarray} (@file{fancybox.sty}) +@item +@cindex @code{floatfig}, LaTeX package +@cindex LaTeX packages, @code{floatfig} +@cindex @code{floatingfig}, LaTeX environment +@code{floatingfig} (@file{floatfig.sty}) +@item +@cindex @code{longtable}, LaTeX package +@cindex LaTeX packages, @code{longtable} +@cindex @code{longtable}, LaTeX environment +@code{longtable} (@file{longtable.sty}) +@item +@cindex @code{picinpar}, LaTeX package +@cindex LaTeX packages, @code{picinpar} +@cindex @code{figwindow}, LaTeX environment +@cindex @code{tabwindow}, LaTeX environment +@code{figwindow}, @code{tabwindow} (@file{picinpar.sty}) +@item +@cindex @code{sidecap}, LaTeX package +@cindex LaTeX packages, @code{sidecap} +@cindex @code{SCfigure}, LaTeX environment +@cindex @code{SCtable}, LaTeX environment +@code{SCfigure}, @code{SCtable} (@file{sidecap.sty}) +@item +@cindex @code{rotating}, LaTeX package +@cindex LaTeX packages, @code{rotating} +@cindex @code{sidewaysfigure}, LaTeX environment +@cindex @code{sidewaystable}, LaTeX environment +@code{sidewaysfigure}, @code{sidewaystable} (@file{rotating.sty}) +@item +@cindex @code{subfig}, LaTeX package +@cindex LaTeX packages, @code{subfigure} +@cindex @code{subfigure}, LaTeX environment +@cindex @code{subfigure*}, LaTeX environment +@code{subfigure}, @code{subfigure*}, the @code{\subfigure} macro +(@file{subfigure.sty}) +@item +@cindex @code{supertab}, LaTeX package +@cindex LaTeX packages, @code{supertab} +@cindex @code{supertabular}, LaTeX environment +@code{supertabular} (@file{supertab.sty}) +@item +@cindex @code{wrapfig}, LaTeX package +@cindex LaTeX packages, @code{wrapfig} +@cindex @code{wrapfigure}, LaTeX environment +@code{wrapfigure} (@file{wrapfig.sty}) +@end itemize + +If you want to use other labeled environments, defined with +@code{\newtheorem}, @b{Ref@TeX{}} needs to be configured to recognize +them (@pxref{Defining Label Environments}). + +@node Defining Label Environments, Reference Info, Builtin Label Environments, Labels and References +@section Defining Label Environments +@cindex Label environments, defining + +@vindex reftex-label-alist +@b{Ref@TeX{}} can be configured to recognize additional labeled +environments and macros. This is done with the variable +@code{reftex-label-alist} (@pxref{Options (Defining Label +Environments)}). If you are not familiar with Lisp, you can use the +@code{custom} library to configure this rather complex variable. To do +this, use + +@example +@kbd{M-x customize-variable @key{RET} reftex-label-alist @key{RET}} +@end example + +@vindex reftex-label-alist-builtin +Here we will discuss a few examples, in order to make things clearer. +It can also be instructive to look at the constant +@code{reftex-label-alist-builtin} which contains the entries for +all the builtin environments and macros (@pxref{Builtin Label +Environments}). + +@menu +* Theorem and Axiom:: Defined with @code{\newenvironment}. +* Quick Equation:: When a macro sets the label type. +* Figure Wrapper:: When a macro argument is a label. +* Adding Magic Words:: Other words for other languages. +* Using \eqref:: How to switch to this AMS-LaTeX macro. +* Non-Standard Environments:: Environments without \begin and \end +* Putting it Together:: How to combine many entries. +@end menu + +@node Theorem and Axiom, Quick Equation, , Defining Label Environments +@subsection Theorem and Axiom Environments +@cindex @code{theorem}, newtheorem +@cindex @code{axiom}, newtheorem +@cindex @code{\newtheorem} + +Suppose you are using @code{\newtheorem} in LaTeX in order to define two +new environments, @code{theorem} and @code{axiom} + +@example +\newtheorem@{axiom@}@{Axiom@} +\newtheorem@{theorem@}@{Theorem@} +@end example + +@noindent +to be used like this: + +@example +\begin@{axiom@} +\label@{ax:first@} + .... +\end@{axiom@} +@end example + +So we need to tell @b{Ref@TeX{}} that @code{theorem} and @code{axiom} are new +labeled environments which define their own label categories. We can +either use Lisp to do this (e.g. in @file{.emacs}) or use the custom +library. With Lisp it would look like this + +@lisp +(setq reftex-label-alist + '(("axiom" ?a "ax:" "~\\ref@{%s@}" nil ("axiom" "ax.") -2) + ("theorem" ?h "thr:" "~\\ref@{%s@}" t ("theorem" "th.") -3))) +@end lisp + +The type indicator characters @code{?a} and @code{?h} are used for +prompts when @b{Ref@TeX{}} queries for a label type. @code{?h} +was chosen for @code{theorem} since @code{?t} is already taken by +@code{table}. Note that also @code{?s}, @code{?f}, @code{?e}, +@code{?i}, @code{?n} are already used for standard environments. + +@noindent +The labels for Axioms and Theorems will have the prefixes @samp{ax:} and +@samp{thr:}, respectively. @xref{AUCTeX}, for information on how +AUCTeX can use RefTeX to automatically create labels when a new environment +is inserted into a buffer. Additionally, the following needs to be +added to one's .emacs file before AUCTeX will automatically create +labels for the new environments. + +@lisp +(add-hook 'LaTeX-mode-hook + (lambda () + (LaTeX-add-environments + '("axiom" LaTeX-env-label) + '("theorem" LaTeX-env-label)))) +@end lisp + + +@noindent +The @samp{~\ref@{%s@}} is a format string indicating how to insert +references to these labels. + +@noindent +The next item indicates how to grab context of the label definition. +@itemize @minus +@item +@code{t} means to get it from a default location (from the beginning of +a @code{\macro} or after the @code{\begin} statement). @code{t} is +@emph{not} a good choice for eqnarray and similar environments. +@item +@code{nil} means to use the text right after the label definition. +@item +For more complex ways of getting context, see the variable +@code{reftex-label-alist} (@ref{Options (Defining Label +Environments)}). +@end itemize + +The following list of strings is used to guess the correct label type +from the word before point when creating a reference. E.g. if you +write: @samp{As we have shown in Theorem} and then press @kbd{C-c )}, +@b{Ref@TeX{}} will know that you are looking for a theorem label and +restrict the menu to only these labels without even asking. + +The final item in each entry is the level at which the environment +should produce entries in the table of context buffer. If the number is +positive, the environment will produce numbered entries (like +@code{\section}), if it is negative the entries will be unnumbered (like +@code{\section*}). Use this only for environments which structure the +document similar to sectioning commands. For everything else, omit the +item. + +To do the same configuration with @code{customize}, you need to click on +the @code{[INS]} button twice to create two templates and fill them in +like this: + +@example +Reftex Label Alist: [Hide] +[INS] [DEL] Package or Detailed : [Value Menu] Detailed: + Environment or \macro : [Value Menu] String: axiom + Type specification : [Value Menu] Char : a + Label prefix string : [Value Menu] String: ax: + Label reference format: [Value Menu] String: ~\ref@{%s@} + Context method : [Value Menu] After label + Magic words: + [INS] [DEL] String: axiom + [INS] [DEL] String: ax. + [INS] + [X] Make TOC entry : [Value Menu] Level: -2 +[INS] [DEL] Package or Detailed : [Value Menu] Detailed: + Environment or \macro : [Value Menu] String: theorem + Type specification : [Value Menu] Char : h + Label prefix string : [Value Menu] String: thr: + Label reference format: [Value Menu] String: ~\ref@{%s@} + Context method : [Value Menu] Default position + Magic words: + [INS] [DEL] String: theorem + [INS] [DEL] String: theor. + [INS] [DEL] String: th. + [INS] + [X] Make TOC entry : [Value Menu] Level: -3 +@end example + +@vindex reftex-insert-label-flags +@vindex reftex-label-menu-flags +Depending on how you would like the label insertion and selection for +the new environments to work, you might want to add the letters @samp{a} +and @samp{h} to some of the flags in the variables +@code{reftex-insert-label-flags} (@pxref{Options (Creating Labels)}) +and @code{reftex-label-menu-flags} (@pxref{Options (Referencing +Labels)}). + + +@node Quick Equation, Figure Wrapper, Theorem and Axiom , Defining Label Environments +@subsection Quick Equation Macro +@cindex Quick equation macro +@cindex Macros as environment wrappers + +Suppose you would like to have a macro for quick equations. It +could be defined like this: + +@example +\newcommand@{\quickeq@}[1]@{\begin@{equation@} #1 \end@{equation@}@} +@end example + +@noindent +and used like this: + +@example +Einstein's equation is \quickeq@{E=mc^2 \label@{eq:einstein@}@}. +@end example + +We need to tell @b{Ref@TeX{}} that any label defined in the argument of the +@code{\quickeq} is an equation label. Here is how to do this with lisp: + +@lisp +(setq reftex-label-alist '(("\\quickeq@{@}" ?e nil nil 1 nil))) +@end lisp + +The first element in this list is now the macro with empty braces as an +@emph{image} of the macro arguments. @code{?e} indicates that this is +an equation label, the different @code{nil} elements indicate to use the +default values for equations. The @samp{1} as the fifth element +indicates that the context of the label definition should be the 1st +argument of the macro. + +Here is again how this would look in the customization buffer: + +@example +Reftex Label Alist: [Hide] +[INS] [DEL] Package or Detailed : [Value Menu] Detailed: + Environment or \macro : [Value Menu] String: \quickeq@{@} + Type specification : [Value Menu] Char : e + Label prefix string : [Value Menu] Default + Label reference format: [Value Menu] Default + Context method : [Value Menu] Macro arg nr: 1 + Magic words: + [INS] + [ ] Make TOC entry : [Value Menu] No entry +@end example + +@node Figure Wrapper, Adding Magic Words, Quick Equation, Defining Label Environments +@subsection Figure Wrapping Macro +@cindex Macros as environment wrappers +@cindex Figure wrapping macro + +Suppose you want to make figures not directly with the figure +environment, but with a macro like + +@example +\newcommand@{\myfig@}[5][tbp]@{% + \begin@{figure@}[#1] + \epsimp[#5]@{#2@} + \caption@{#3@} + \label@{#4@} + \end@{figure@}@} +@end example + +@noindent +which would be called like + +@example +\myfig[htp]@{filename@}@{caption text@}@{label@}@{1@} +@end example + +Now we need to tell @b{Ref@TeX{}} that the 4th argument of the +@code{\myfig} macro @emph{is itself} a figure label, and where to find +the context. + +@lisp +(setq reftex-label-alist + '(("\\myfig[]@{@}@{@}@{*@}@{@}" ?f nil nil 3))) +@end lisp + +The empty pairs of brackets indicate the different arguments of the +@code{\myfig} macro. The @samp{*} marks the label argument. @code{?f} +indicates that this is a figure label which will be listed together with +labels from normal figure environments. The @code{nil} entries for +prefix and reference format mean to use the defaults for figure labels. +The @samp{3} for the context method means to grab the 3rd macro argument +- the caption. + +As a side effect of this configuration, @code{reftex-label} will now +insert the required naked label (without the @code{\label} macro) when +point is directly after the opening parenthesis of a @code{\myfig} macro +argument. + +Again, here the configuration in the customization buffer: + +@example +[INS] [DEL] Package or Detailed : [Value Menu] Detailed: + Environment or \macro : [Value Menu] String: \myfig[]@{@}@{@}@{*@}@{@} + Type specification : [Value Menu] Char : f + Label prefix string : [Value Menu] Default + Label reference format: [Value Menu] Default + Context method : [Value Menu] Macro arg nr: 3 + Magic words: + [INS] + [ ] Make TOC entry : [Value Menu] No entry +@end example + +@node Adding Magic Words, Using \eqref, Figure Wrapper, Defining Label Environments +@subsection Adding Magic Words +@cindex Magic words +@cindex German magic words +@cindex Label category + +Sometimes you don't want to define a new label environment or macro, but +just change the information associated with a label category. Maybe you +want to add some magic words, for another language. Changing only the +information associated with a label category is done by giving +@code{nil} for the environment name and then specify the items you want +to define. Here is an example which adds German magic words to all +predefined label categories. + +@lisp +(setq reftex-label-alist + '((nil ?s nil nil nil ("Kapitel" "Kap." "Abschnitt" "Teil")) + (nil ?e nil nil nil ("Gleichung" "Gl.")) + (nil ?t nil nil nil ("Tabelle")) + (nil ?f nil nil nil ("Figur" "Abbildung" "Abb.")) + (nil ?n nil nil nil ("Anmerkung" "Anm.")) + (nil ?i nil nil nil ("Punkt")))) +@end lisp + +@node Using \eqref, Non-Standard Environments, Adding Magic Words, Defining Label Environments +@subsection Using @code{\eqref} +@cindex @code{\eqref}, AMS-LaTeX macro +@cindex AMS-LaTeX +@cindex Label category + +Another case where one only wants to change the information associated +with the label category is to change the macro which is used for +referencing the label. When working with the AMS-LaTeX stuff, you might +prefer @code{\eqref} for doing equation references. Here is how to +do this: + +@lisp +(setq reftex-label-alist '((nil ?e nil "~\\eqref@{%s@}" nil nil))) +@end lisp + +@b{Ref@TeX{}} has also a predefined symbol for this special purpose. The +following is equivalent to the line above. + +@lisp +(setq reftex-label-alist '(AMSTeX)) +@end lisp + +Note that this is automatically done by the @file{amsmath.el} style file +of AUCTeX (@pxref{Style Files}) - so if you use AUCTeX, +this configuration will not be necessary. + +@node Non-Standard Environments, Putting it Together, Using \eqref, Defining Label Environments +@subsection Non-standard Environments +@cindex Non-standard environments +@cindex Environments without @code{\begin} +@cindex Special parser functions +@cindex Parser functions, for special environments + +Some LaTeX packages define environment-like structures without using the +standard @samp{\begin..\end} structure. @b{Ref@TeX{}} cannot parse +these directly, but you can write your own special-purpose parser and +use it instead of the name of an environment in an entry for +@code{reftex-label-alist}. The function should check if point is +currently in the special environment it was written to detect. If so, +it must return a buffer position indicating the start of this +environment. The return value must be @code{nil} on failure to detect +the environment. The function is called with one argument @var{bound}. +If non-@code{nil}, @var{bound} is a boundary for backwards searches +which should be observed. We will discuss two examples. + +@cindex LaTeX commands, abbreviated + +Some people define abbreviations for +environments, like @code{\be} for @code{\begin@{equation@}}, and +@code{\ee} for @code{\end@{equation@}}. The parser function would have +to search backward for these macros. When the first match is +@code{\ee}, point is not in this environment. When the first match is +@code{\be}, point is in this environment and the function must return +the beginning of the match. To avoid scanning too far, we can also look +for empty lines which cannot occur inside an equation environment. +Here is the setup: + +@lisp +;; Setup entry in reftex-label-alist, using all defaults for equations +(setq reftex-label-alist '((detect-be-ee ?e nil nil nil nil))) + +(defun detect-be-ee (bound) + ;; Search backward for the macros or an empty line + (if (re-search-backward + "\\(^[ \t]*\n\\|\\\\ee\\>\\)\\|\\(\\\\be\\>\\)" bound t) + (if (match-beginning 2) + (match-beginning 2) ; Return start of environment + nil) ; Return nil because env is closed + nil)) ; Return nil for not found +@end lisp + +@cindex @code{linguex}, LaTeX package +@cindex LaTeX packages, @code{linguex} +A more complex example is the @file{linguex.sty} package which defines +list macros @samp{\ex.}, @samp{\a.}, @samp{\b.} etc. for lists which are +terminated by @samp{\z.} or by an empty line. + +@example +\ex. \label@{ex:12@} Some text in an exotic language ... + \a. \label@{ex:13@} more stuff + \b. \label@{ex:14@} still more stuff + \a. List on a deeper level + \b. Another item + \b. and the third one + \z. + \b. Third item on this level. + +... text after the empty line terminating all lists +@end example + +The difficulty is that the @samp{\a.} lists can nest and that an empty +line terminates all list levels in one go. So we have to count nesting +levels between @samp{\a.} and @samp{\z.}. Here is the implementation +for @b{Ref@TeX{}}. + +@lisp +(setq reftex-label-alist + '((detect-linguex ?x "ex:" "~\\ref@{%s@}" nil ("Example" "Ex.")))) + +(defun detect-linguex (bound) + (let ((cnt 0)) + (catch 'exit + (while + ;; Search backward for all possible delimiters + (re-search-backward + (concat "\\(^[ \t]*\n\\)\\|\\(\\\\z\\.\\)\\|" + "\\(\\ex[ig]?\\.\\)\\|\\(\\\\a\\.\\)") + nil t) + ;; Check which delimiter was matched. + (cond + ((match-beginning 1) + ;; empty line terminates all - return nil + (throw 'exit nil)) + ((match-beginning 2) + ;; \z. terminates one list level - decrease nesting count + (decf cnt)) + ((match-beginning 3) + ;; \ex. : return match unless there was a \z. on this level + (throw 'exit (if (>= cnt 0) (match-beginning 3) nil))) + ((match-beginning 4) + ;; \a. : return match when on level 0, otherwise + ;; increment nesting count + (if (>= cnt 0) + (throw 'exit (match-beginning 4)) + (incf cnt)))))))) +@end lisp + +@node Putting it Together, , Non-Standard Environments, Defining Label Environments +@subsection Putting it all together + +When you have to put several entries into @code{reftex-label-alist}, just +put them after each other in a list, or create that many templates in +the customization buffer. Here is a lisp example which uses several of +the entries described above: + +@lisp +(setq reftex-label-alist + '(("axiom" ?a "ax:" "~\\ref@{%s@}" nil ("axiom" "ax.") -2) + ("theorem" ?h "thr:" "~\\ref@{%s@}" t ("theorem" "theor." "th.") -3) + ("\\quickeq@{@}" ?e nil nil 1 nil) + AMSTeX + ("\\myfig[]@{@}@{@}@{*@}@{@}" ?f nil nil 3) + (detect-linguex ?x "ex:" "~\\ref@{%s@}" nil ("Example" "Ex.")))) +@end lisp + +@node Reference Info, xr (LaTeX package), Defining Label Environments, Labels and References +@section Reference Info +@findex reftex-view-crossref +@findex reftex-mouse-view-crossref +@cindex Cross-references, displaying +@cindex Reference info +@cindex Displaying cross-references +@cindex Viewing cross-references +@kindex C-c & +@kindex S-mouse-2 + +When point is idle for more than @code{reftex-idle-time} seconds on the +argument of a @code{\ref} macro, the echo area will display some +information about the label referenced there. Note that the information +is only displayed if the echo area is not occupied by a different +message. + +@b{Ref@TeX{}} can also display the label definition corresponding to a +@code{\ref} macro, or all reference locations corresponding to a +@code{\label} macro. @xref{Viewing Cross-References}, for more +information. + +@node xr (LaTeX package), varioref (LaTeX package), Reference Info, Labels and References +@section @code{xr}: Cross-Document References +@cindex @code{xr}, LaTeX package +@cindex LaTeX packages, @code{xr} +@cindex @code{\externaldocument} +@cindex External documents +@cindex References to external documents +@cindex Cross-document references + +The LaTeX package @code{xr} makes it possible to create references to +labels defined in external documents. The preamble of a document using +@code{xr} will contain something like this: + +@example +\usepackage@{xr@} +\externaldocument[V1-]@{volume1@} +\externaldocument[V3-]@{volume3@} +@end example + +@noindent +and we can make references to any labels defined in these +external documents by using the prefixes @samp{V1-} and @samp{V3-}, +respectively. + +@b{Ref@TeX{}} can be used to create such references as well. Start the +referencing process normally, by pressing @kbd{C-c )}. Select a label +type if necessary. When you see the label selection buffer, pressing +@kbd{x} will switch to the label selection buffer of one of the external +documents. You may then select a label as before and @b{Ref@TeX{}} will +insert it along with the required prefix. + +For this kind of inter-document cross-references, saving of parsing +information and the use of multiple selection buffers can mean a large +speed-up (@pxref{Optimizations}). + +@node varioref (LaTeX package), fancyref (LaTeX package), xr (LaTeX package), Labels and References +@section @code{varioref}: Variable Page References +@cindex @code{varioref}, LaTeX package +@cindex @code{\vref} +@cindex LaTeX packages, @code{varioref} +@vindex reftex-vref-is-default +@code{varioref} is a frequently used LaTeX package to create +cross--references with page information. When you want to make a +reference with the @code{\vref} macro, just press the @kbd{v} key in the +selection buffer to toggle between @code{\ref} and @code{\vref} +(@pxref{Referencing Labels}). The mode line of the selection buffer +shows the current status of this switch. If you find that you almost +always use @code{\vref}, you may want to make it the default by +customizing the variable @code{reftex-vref-is-default}. If this +toggling seems too inconvenient, you can also use the command +@code{reftex-varioref-vref}@footnote{bind it to @kbd{C-c v}.}. +Or use AUCTeX to create your macros (@pxref{AUCTeX}). + +@node fancyref (LaTeX package), , varioref (LaTeX package), Labels and References +@section @code{fancyref}: Fancy Cross References +@cindex @code{fancyref}, LaTeX package +@cindex @code{\fref} +@cindex @code{\Fref} +@cindex LaTeX packages, @code{fancyref} +@vindex reftex-fref-is-default +@code{fancyref} is a LaTeX package where a macro call like +@code{\fref@{@var{fig:map-of-germany}@}} creates not only the number of +the referenced counter but also the complete text around it, like +@samp{Figure 3 on the preceding page}. In order to make it work you +need to use label prefixes like @samp{fig:} consistently - something +@b{Ref@TeX{}} does automatically. When you want to make a reference +with the @code{\fref} macro, just press the @kbd{V} key in the selection +buffer to cycle between @code{\ref}, @code{\fref} and @code{\Fref} +(@pxref{Referencing Labels}). The mode line of the selection buffer +shows the current status of this switch. If this cycling seems +inconvenient, you can also use the commands @code{reftex-fancyref-fref} +and @code{reftex-fancyref-Fref}@footnote{bind them to @kbd{C-c +f} and @kbd{C-c F}.}. Or use AUCTeX to create your macros +(@pxref{AUCTeX}). + +@node Citations, Index Support, Labels and References, Top +@chapter Citations +@cindex Citations +@cindex @code{\cite} + +Citations in LaTeX are done with the @code{\cite} macro or variations of +it. The argument of the macro is a citation key which identifies an +article or book in either a BibTeX database file or in an explicit +@code{thebibliography} environment in the document. @b{Ref@TeX{}}'s +support for citations helps to select the correct key quickly. + +@menu +* Creating Citations:: How to create them. +* Citation Styles:: Natbib, Harvard, Chicago and Co. +* Citation Info:: View the corresponding database entry. +* Chapterbib and Bibunits:: Multiple bibliographies in a Document. +* Citations Outside LaTeX:: How to make citations in Emails etc. +* BibTeX Database Subsets:: Extract parts of a big database. +@end menu + +@node Creating Citations, Citation Styles, , Citations +@section Creating Citations +@cindex Creating citations +@cindex Citations, creating +@findex reftex-citation +@kindex C-c [ +@cindex Selection buffer, citations +@cindex Selection process + +In order to create a citation, press @kbd{C-c [}. @b{Ref@TeX{}} then +prompts for a regular expression which will be used to search through +the database and present the list of matches to choose from in a +selection process similar to that for selecting labels +(@pxref{Referencing Labels}). + +The regular expression uses an extended syntax: @samp{&&} defines a +logic @code{and} for regular expressions. For example +@samp{Einstein&&Bose} will match all articles which mention +Bose-Einstein condensation, or which are co-authored by Bose and +Einstein. When entering the regular expression, you can complete on +known citation keys. RefTeX also offers a default when prompting for a +regular expression. This default is the word before the cursor or the +word before the current @samp{\cite} command. Sometimes this may be a +good search key. + +@cindex @code{\bibliography} +@cindex @code{thebibliography}, LaTeX environment +@cindex @code{BIBINPUTS}, environment variable +@cindex @code{TEXBIB}, environment variable +@b{Ref@TeX{}} prefers to use BibTeX database files specified with a +@code{\bibliography} macro to collect its information. Just like +BibTeX, it will search for the specified files in the current directory +and along the path given in the environment variable @code{BIBINPUTS}. +If you do not use BibTeX, but the document contains an explicit +@code{thebibliography} environment, @b{Ref@TeX{}} will collect its +information from there. Note that in this case the information +presented in the selection buffer will just be a copy of relevant +@code{\bibitem} entries, not the structured listing available with +BibTeX database files. + +@kindex ? +In the selection buffer, the following keys provide special commands. A +summary of this information is always available from the selection +process by pressing @kbd{?}. + +@table @kbd +@tablesubheading{General} +@item ? +Show a summary of available commands. + +@item 0-9,- +Prefix argument. + +@tablesubheading{Moving around} +@item n +Go to next article. + +@item p +Go to previous article. + +@tablesubheading{Access to full database entries} +@item @key{SPC} +Show the database entry corresponding to the article at point, in +another window. See also the @kbd{f} key. + +@item f +Toggle follow mode. When follow mode is active, the other window will +always display the full database entry of the current article. This is +equivalent to pressing @key{SPC} after each cursor motion. With BibTeX +entries, follow mode can be rather slow. + +@tablesubheading{Selecting entries and creating the citation} +@item @key{RET} +Insert a citation referencing the article at point into the buffer from +which the selection process was started. + +@item mouse-2 +@vindex reftex-highlight-selection +Clicking with mouse button 2 on a citation will accept it like @key{RET} +would. See also variable @code{reftex-highlight-selection}, @ref{Options +(Misc)}. + +@item m +Mark the current entry. When one or several entries are marked, +pressing @kbd{a} or @kbd{A} accepts all marked entries. Also, +@key{RET} behaves like the @kbd{a} key. + +@item u +Unmark a marked entry. + +@item a +Accept all (marked) entries in the selection buffer and create a single +@code{\cite} macro referring to them. + +@item A +Accept all (marked) entries in the selection buffer and create a +separate @code{\cite} macro for each of it. + +@item e +Create a new BibTeX database file which contains all @i{marked} entries +in the selection buffer. If no entries are marked, all entries are +selected. + +@item E +Create a new BibTeX database file which contains all @i{unmarked} +entries in the selection buffer. If no entries are marked, all entries +are selected. + +@item @key{TAB} +Enter a citation key with completion. This may also be a key which does +not yet exist. + +@item . +Show insertion point in another window. This is the point from where you +called @code{reftex-citation}. + +@tablesubheading{Exiting} +@item q +Exit the selection process without inserting a citation into the +buffer. + +@tablesubheading{Updating the buffer} + +@item g +Start over with a new regular expression. The full database will be +rescanned with the new expression (see also @kbd{r}). + +@c FIXME: Should we use something else here? r is usually rescan! +@item r +Refine the current selection with another regular expression. This will +@emph{not} rescan the entire database, but just the already selected +entries. + +@end table + +@vindex reftex-select-bib-map +In order to define additional commands for this selection process, the +keymap @code{reftex-select-bib-map} may be used. + +@node Citation Styles, Citation Info, Creating Citations, Citations +@section Citation Styles +@cindex Citation styles +@cindex Citation styles, @code{natbib} +@cindex Citation styles, @code{harvard} +@cindex Citation styles, @code{chicago} +@cindex Citation styles, @code{jurabib} +@cindex @code{natbib}, citation style +@cindex @code{harvard}, citation style +@cindex @code{chicago}, citation style +@cindex @code{jurabib}, citation style + +@vindex reftex-cite-format +The standard LaTeX macro @code{\cite} works well with numeric or simple +key citations. To deal with the more complex task of author-year +citations as used in many natural sciences, a variety of packages has +been developed which define derived forms of the @code{\cite} macro. +@b{Ref@TeX{}} can be configured to produce these citation macros as well +by setting the variable @code{reftex-cite-format}. For the most +commonly used packages (@code{natbib}, @code{harvard}, @code{chicago}, +@code{jurabib}) this may be done from the menu, under +@code{Ref->Citation Styles}. Since there are usually several macros to +create the citations, executing @code{reftex-citation} (@kbd{C-c [}) +starts by prompting for the correct macro. For the Natbib style, this +looks like this: + +@example +SELECT A CITATION FORMAT + +[^M] \cite@{%l@} +[t] \citet@{%l@} +[T] \citet*@{%l@} +[p] \citep@{%l@} +[P] \citep*@{%l@} +[e] \citep[e.g.][]@{%l@} +[s] \citep[see][]@{%l@} +[a] \citeauthor@{%l@} +[A] \citeauthor*@{%l@} +[y] \citeyear@{%l@} +@end example + +@vindex reftex-cite-prompt-optional-args +If cite formats contain empty paris of square brackets, RefTeX can +will prompt for values of these optional arguments if you call the +@code{reftex-citation} command with a @kbd{C-u} prefix. +Following the most generic of these packages, @code{natbib}, the builtin +citation packages always accept the @kbd{t} key for a @emph{textual} +citation (like: @code{Jones et al. (1997) have shown...}) as well as +the @kbd{p} key for a parenthetical citation (like: @code{As shown +earlier (Jones et al, 1997)}). + +To make one of these styles the default, customize the variable +@code{reftex-cite-format} or put into @file{.emacs}: + +@lisp +(setq reftex-cite-format 'natbib) +@end lisp + +You can also use AUCTeX style files to automatically set the +citation style based on the @code{usepackage} commands in a given +document. @xref{Style Files}, for information on how to set up the style +files correctly. + +@node Citation Info, Chapterbib and Bibunits, Citation Styles, Citations, Top +@section Citation Info +@cindex Displaying citations +@cindex Citations, displaying +@cindex Citation info +@cindex Viewing citations +@kindex C-c & +@kindex S-mouse-2 +@findex reftex-view-crossref +@findex reftex-mouse-view-crossref + +When point is idle for more than @code{reftex-idle-time} seconds on the +argument of a @code{\cite} macro, the echo area will display some +information about the article cited there. Note that the information is +only displayed if the echo area is not occupied by a different message. + +@b{Ref@TeX{}} can also display the @code{\bibitem} or BibTeX database +entry corresponding to a @code{\cite} macro, or all citation locations +corresponding to a @code{\bibitem} or BibTeX database entry. +@xref{Viewing Cross-References}. + +@node Chapterbib and Bibunits, Citations Outside LaTeX, Citation Info, Citations +@section Chapterbib and Bibunits +@cindex @code{chapterbib}, LaTeX package +@cindex @code{bibunits}, LaTeX package +@cindex Bibliographies, multiple + +@code{chapterbib} and @code{bibunits} are two LaTeX packages which +produce multiple bibliographies in a document. This is no problem for +@b{Ref@TeX{}} as long as all bibliographies use the same BibTeX database +files. If they do not, it is best to have each document part in a +separate file (as it is required for @code{chapterbib} anyway). Then +@b{Ref@TeX{}} will still scan the locally relevant databases correctly. If +you have multiple bibliographies within a @emph{single file}, this may +or may not be the case. + +@node Citations Outside LaTeX, BibTeX Database Subsets, Chapterbib and Bibunits, Citations +@section Citations outside LaTeX +@cindex Citations outside LaTeX +@vindex reftex-default-bibliography + +The command @code{reftex-citation} can also be executed outside a LaTeX +buffer. This can be useful to reference articles in the mail buffer and +other documents. You should @emph{not} enter @code{reftex-mode} for +this, just execute the command. The list of BibTeX files will in this +case be taken from the variable @code{reftex-default-bibliography}. +Setting the variable @code{reftex-cite-format} to the symbol +@code{locally} does a decent job of putting all relevant information +about a citation directly into the buffer. Here is the lisp code to add +the @kbd{C-c [} binding to the mail buffer. It also provides a local +binding for @code{reftex-cite-format}. + +@lisp +(add-hook 'mail-setup-hook + (lambda () (define-key mail-mode-map "\C-c[" + (lambda () + (interactive) + (let ((reftex-cite-format 'locally)) + (reftex-citation)))))) +@end lisp + +@node BibTeX Database Subsets, , Citations Outside LaTeX, Citations +@section Database Subsets +@cindex BibTeX database subsets +@findex reftex-create-bibtex-file + +@b{Ref@TeX{}} offers two ways to create a new BibTeX database file. + +The first option produces a file which contains only the entries +actually referenced in the current document. This can be useful if +the database in only meant for a single document and you want to clean +it of old and unused ballast. It can also be useful while writing a +document together with collaborators, in order to avoid sending around +the entire (possibly very large) database. To create the file, use +@kbd{M-x reftex-create-bibtex-file}, also available from the menu +under @code{Ref->Global Actions->Create Bibtex File}. The command will +prompt for a BibTeX file name and write the extracted entries to that +file. + +The second option makes use of the selection process started by the +command @kbd{C-c [} (@pxref{Creating Citations}). This command uses a +regular expression to select entries, and lists them in a formatted +selection buffer. After pressing the @kbd{e} key (mnemonics: Export), +the command will prompt for the name of a new BibTeX file and write +the selected entries to that file. You can also first mark some +entries in the selection buffer with the @kbd{m} key and then export +either the @i{marked} entries (with the @kbd{e} key) or the +@i{unmarked} entries (with the @kbd{E} key). + +@node Index Support, Viewing Cross-References, Citations, Top +@chapter Index Support +@cindex Index Support +@cindex @code{\index} + +LaTeX has builtin support for creating an Index. The LaTeX core +supports two different indices, the standard index and a glossary. With +the help of special LaTeX packages (@file{multind.sty} or +@file{index.sty}), any number of indices can be supported. + +Index entries are created with the @code{\index@{@var{entry}@}} macro. +All entries defined in a document are written out to the @file{.aux} +file. A separate tool must be used to convert this information into a +nicely formatted index. Tools used with LaTeX include @code{MakeIndex} +and @code{xindy}. + +Indexing is a very difficult task. It must follow strict conventions to +make the index consistent and complete. There are basically two +approaches one can follow, and both have their merits. + +@enumerate +@item +Part of the indexing should already be done with the markup. The +document structure should be reflected in the index, so when starting +new sections, the basic topics of the section should be indexed. If the +document contains definitions, theorems or the like, these should all +correspond to appropriate index entries. This part of the index can +very well be developed along with the document. Often it is worthwhile +to define special purpose macros which define an item and at the same +time make an index entry, possibly with special formatting to make the +reference page in the index bold or underlined. To make @b{Ref@TeX{}} +support for indexing possible, these special macros must be added to +@b{Ref@TeX{}}'s configuration (@pxref{Defining Index Macros}). + +@item +The rest of the index is often just a collection of where in the +document certain words or phrases are being used. This part is +difficult to develop along with the document, because consistent entries +for each occurrence are needed and are best selected when the document +is ready. @b{Ref@TeX{}} supports this with an @emph{index phrases file} +which collects phrases and helps indexing the phrases globally. +@end enumerate + +Before you start, you need to make sure that @b{Ref@TeX{}} knows about +the index style being used in the current document. @b{Ref@TeX{}} has +builtin support for the default @code{\index} and @code{\glossary} +macros. Other LaTeX packages, like the @file{multind} or @file{index} +package, redefine the @code{\index} macro to have an additional +argument, and @b{Ref@TeX{}} needs to be configured for those. A +sufficiently new version of AUCTeX (9.10c or later) will do this +automatically. If you really don't use AUCTeX (you should!), this +configuration needs to be done by hand with the menu (@code{Ref->Index +Style}), or globally for all your documents with + +@lisp +(setq reftex-index-macros '(multind)) @r{or} +(setq reftex-index-macros '(index)) +@end lisp + +@menu +* Creating Index Entries:: Macros and completion of entries. +* The Index Phrases File:: A special file for global indexing. +* Displaying and Editing the Index:: The index editor. +* Builtin Index Macros:: The index macros RefTeX knows about. +* Defining Index Macros:: ... and macros it doesn't. +@end menu + +@node Creating Index Entries, The Index Phrases File, , Index Support +@section Creating Index Entries +@cindex Creating index entries +@cindex Index entries, creating +@kindex C-c < +@findex reftex-index +@kindex C-c / +@findex reftex-index-selection-or-word + +In order to index the current selection or the word at the cursor press +@kbd{C-c /} (@code{reftex-index-selection-or-word}). This causes the +selection or word @samp{@var{word}} to be replaced with +@samp{\index@{@var{word}@}@var{word}}. The macro which is used +(@code{\index} by default) can be configured with the variable +@code{reftex-index-default-macro}. When the command is called with a +prefix argument (@kbd{C-u C-c /}), you get a chance to edit the +generated index entry. Use this to change the case of the word or to +make the entry a subentry, for example by entering +@samp{main!sub!@var{word}}. When called with two raw @kbd{C-u} prefixes +(@kbd{C-u C-u C-c /}), you will be asked for the index macro as well. +When there is nothing selected and no word at point, this command will +just call @code{reftex-index}, described below. + +In order to create a general index entry, press @kbd{C-c <} +(@code{reftex-index}). @b{Ref@TeX{}} will prompt for one of the +available index macros and for its arguments. Completion will be +available for the index entry and, if applicable, the index tag. The +index tag is a string identifying one of multiple indices. With the +@file{multind} and @file{index} packages, this tag is the first argument +to the redefined @code{\index} macro. + +@node The Index Phrases File, Displaying and Editing the Index, Creating Index Entries, Index Support +@section The Index Phrases File +@cindex Index phrase file +@cindex Phrase file +@kindex C-c | +@findex reftex-index-visit-phrases-buffer +@cindex Macro definition lines, in phrase buffer + +@b{Ref@TeX{}} maintains a file in which phrases can be collected for +later indexing. The file is located in the same directory as the master +file of the document and has the extension @file{.rip} (@b{R}eftex +@b{I}ndex @b{P}hrases). You can create or visit the file with @kbd{C-c +|} (@code{reftex-index-visit-phrases-buffer}). If the file is empty it +is initialized by inserting a file header which contains the definition +of the available index macros. This list is initialized from +@code{reftex-index-macros} (@pxref{Defining Index Macros}). You can +edit the header as needed, but if you define new LaTeX indexing macros, +don't forget to add them to @code{reftex-index-macros} as well. Here is +a phrase file header example: + +@example +% -*- mode: reftex-index-phrases -*- +% Key Macro Format Repeat +%---------------------------------------------------------- +>>>INDEX_MACRO_DEFINITION: i \index@{%s@} t +>>>INDEX_MACRO_DEFINITION: I \index*@{%s@} nil +>>>INDEX_MACRO_DEFINITION: g \glossary@{%s@} t +>>>INDEX_MACRO_DEFINITION: n \index*[name]@{%s@} nil +%---------------------------------------------------------- +@end example + +The macro definition lines consist of a unique letter identifying a +macro, a format string and the @var{repeat} flag, all separated by +@key{TAB}. The format string shows how the macro is to be applied, the +@samp{%s} will be replaced with the index entry. The repeat flag +indicates if @var{word} is indexed by the macro as +@samp{\index@{@var{word}@}} (@var{repeat} = @code{nil}) or as +@samp{\index@{@var{word}@}@var{word}} (@var{repeat} = @code{t}). In the +above example it is assumed that the macro @code{\index*@{@var{word}@}} +already typesets its argument in the text, so that it is unnecessary to +repeat @var{word} outside the macro. + +@menu +* Collecting Phrases:: Collecting from document or external. +* Consistency Checks:: Check for duplicates etc. +* Global Indexing:: The interactive indexing process. +@end menu + +@node Collecting Phrases, Consistency Checks, , The Index Phrases File +@subsection Collecting Phrases +@cindex Collecting index phrases +@cindex Index phrases, collection +@cindex Phrases, collecting + +Phrases for indexing can be collected while writing the document. The +command @kbd{C-c \} (@code{reftex-index-phrase-selection-or-word}) +copies the current selection (if active) or the word near point into the +phrases buffer. It then selects this buffer, so that the phrase line +can be edited. To return to the LaTeX document, press @kbd{C-c C-c} +(@code{reftex-index-phrases-save-and-return}). + +You can also prepare the list of index phrases in a different way and +copy it into the phrases file. For example you might want to start from +a word list of the document and remove all words which should not be +indexed. + +The phrase lines in the phrase buffer must have a specific format. +@b{Ref@TeX{}} will use font-lock to indicate if a line has the proper +format. A phrase line looks like this: + +@example +[@var{key}] <TABs> @var{phrase} [<TABs> @var{arg}[&&@var{arg}]... [ || @var{arg}]...] +@end example + +@code{<TABs>} stands for white space containing at least one @key{TAB}. +@var{key} must be at the start of the line and is the character +identifying one of the macros defined in the file header. It is +optional - when omitted, the first macro definition line in the file +will be used for this phrase. The @var{phrase} is the phrase to be +searched for when indexing. It may contain several words separated by +spaces. By default the search phrase is also the text entered as +argument of the index macro. If you want the index entry to be +different from the search phrase, enter another @key{TAB} and the index +argument @var{arg}. If you want to have each match produce several +index entries, separate the different index arguments with @samp{ && +}@footnote{@samp{&&} with optional spaces, see +@code{reftex-index-phrases-logical-and-regexp}.}. If you want to be +able to choose at each match between several different index arguments, +separate them with @samp{ || }@footnote{@samp{||} with optional spaces, +see @code{reftex-index-phrases-logical-or-regexp}.}. Here is an +example: + +@example +%-------------------------------------------------------------------- +I Sun +i Planet Planets +i Vega Stars!Vega + Jupiter Planets!Jupiter +i Mars Planets!Mars || Gods!Mars || Chocolate Bars!Mars +i Pluto Planets!Pluto && Kuiper Belt Objects!Pluto +@end example + + +So @samp{Sun} will be indexed directly as @samp{\index*@{Sun@}}, while +@samp{Planet} will be indexed as @samp{\index@{Planets@}Planet}. +@samp{Vega} will be indexed as a subitem of @samp{Stars}. The +@samp{Jupiter} line will also use the @samp{i} macro as it was the first +macro definition in the file header (see above example). At each +occurrence of @samp{Mars} you will be able choose between indexing it as +a subitem of @samp{Planets}, @samp{Gods} or @samp{Chocolate Bars}. +Finally, every occurrence of @samp{Pluto} will be indexed as +@samp{\index@{Planets!Pluto@}\index@{Kuiper Belt Objects!Pluto@}Pluto} +and will therefore create two different index entries. + +@node Consistency Checks, Global Indexing, Collecting Phrases, The Index Phrases File +@subsection Consistency Checks +@cindex Index phrases, consistency checks +@cindex Phrases, consistency checks +@cindex Consistency check for index phrases + +@kindex C-c C-s +Before indexing the phrases in the phrases buffer, they should be +checked carefully for consistency. A first step is to sort the phrases +alphabetically - this is done with the command @kbd{C-c C-s} +(@code{reftex-index-sort-phrases}). It will sort all phrases in the +buffer alphabetically by search phrase. If you want to group certain +phrases and only sort within the groups, insert empty lines between the +groups. Sorting will only change the sequence of phrases within each +group (see the variable @code{reftex-index-phrases-sort-in-blocks}). + +@kindex C-c C-i +A useful command is @kbd{C-c C-i} (@code{reftex-index-phrases-info}) +which lists information about the phrase at point, including an example +of how the index entry will look like and the number of expected matches +in the document. + +@kindex C-c C-t +Another important check is to find out if there are double or +overlapping entries in the buffer. For example if you are first +searching and indexing @samp{Mars} and then @samp{Planet Mars}, the +second phrase will not match because of the index macro inserted before +@samp{Mars} earlier. The command @kbd{C-c C-t} +(@code{reftex-index-find-next-conflict-phrase}) finds the next phrase in +the buffer which is either duplicate or a subphrase of another phrase. +In order to check the whole buffer like this, start at the beginning and +execute this command repeatedly. + +@node Global Indexing, , Consistency Checks, The Index Phrases File +@subsection Global Indexing +@cindex Global indexing +@cindex Indexing, global +@cindex Indexing, from @file{phrases} buffer + +Once the index phrases have been collected and organized, you are set +for global indexing. I recommend to do this only on an otherwise +finished document. Global indexing starts from the phrases buffer. +There are several commands which start indexing: @kbd{C-c C-x} acts on +the current phrase line, @kbd{C-c C-r} on all lines in the current +region and @kbd{C-c C-a} on all phrase lines in the buffer. It is +probably good to do indexing in small chunks since your concentration +may not last long enough to do everything in one go. + +@b{Ref@TeX{}} will start at the first phrase line and search the phrase +globally in the whole document. At each match it will stop, compute the +replacement string and offer you the following choices@footnote{Windows +users: Restrict yourself to the described keys during indexing. Pressing +@key{Help} at the indexing prompt can apparently hang Emacs.}: + +@table @kbd +@item y +Replace this match with the proposed string. +@item n +Skip this match. +@item ! +Replace this and all further matches in this file. +@item q +Skip this match, start with next file. +@item Q +Skip this match, start with next phrase. +@item o +Select a different indexing macro for this match. +@item 1-9 +Select one of multiple index keys (those separated with @samp{||}). +@item e +Edit the replacement text. +@item C-r +Recursive edit. Use @kbd{C-M-c} to return to the indexing process. +@item s +Save this buffer and ask again about the current match. +@item S +Save all document buffers and ask again about the current match. +@item C-g +Abort the indexing process. +@end table + +The @samp{Find and Index in Document} menu in the phrases buffer also +lists a few options for the indexing process. The options have +associated customization variables to set the defaults (@pxref{Options +(Index Support)}). Here is a short explanation of what the options do: + +@table @i +@item Match Whole Words +When searching for index phrases, make sure whole words are matched. +This should probably always be on. +@item Case Sensitive Search +Search case sensitively for phrases. I recommend to have this setting +off, in order to match the capitalized words at the beginning of a +sentence, and even typos. You can always say @emph{no} at a match you +do not like. +@item Wrap Long Lines +Inserting index macros increases the line length. Turn this option on +to allow @b{Ref@TeX{}} to wrap long lines. +@item Skip Indexed Matches +When this is on, @b{Ref@TeX{}} will at each match try to figure out if +this match is already indexed. A match is considered indexed if it is +either the argument of an index macro, or if an index macro is directly +(without whitespace separation) before or after the match. Index macros +are those configured in @code{reftex-index-macros}. Intended for +re-indexing a documents after changes have been made. +@end table + +Even though indexing should be the last thing you do to a document, you +are bound to make changes afterwards. Indexing then has to be applied +to the changed regions. The command +@code{reftex-index-phrases-apply-to-region} is designed for this +purpose. When called from a LaTeX document with active region, it will +apply @code{reftex-index-all-phrases} to the current region. + +@node Displaying and Editing the Index, Builtin Index Macros, The Index Phrases File, Index Support +@section Displaying and Editing the Index +@cindex Displaying the Index +@cindex Editing the Index +@cindex Index entries, creating +@cindex Index, displaying +@cindex Index, editing +@kindex C-c > +@findex reftex-display-index + +In order to compile and display the index, press @kbd{C-c >}. If the +document uses multiple indices, @b{Ref@TeX{}} will ask you to select +one. Then, all index entries will be sorted alphabetically and +displayed in a special buffer, the @file{*Index*} buffer. From that +buffer you can check and edit each entry. + +The index can be restricted to the current section or the region. Then +only entries in that part of the document will go into the compiled +index. To restrict to the current section, use a numeric prefix +@samp{2}, thus press @kbd{C-u 2 C-c >}. To restrict to the current +region, make the region active and use a numeric prefix @samp{3} (press +@kbd{C-u 3 C-c >}). From within the @file{*Index*} buffer the +restriction can be moved from one section to the next by pressing the +@kbd{<} and @kbd{>} keys. + +One caveat: @b{Ref@TeX{}} finds the definition point of an index entry +by searching near the buffer position where it had found to macro during +scanning. If you have several identical index entries in the same +buffer and significant changes have shifted the entries around, you must +rescan the buffer to ensure the correspondence between the +@file{*Index*} buffer and the definition locations. It is therefore +advisable to rescan the document (with @kbd{r} or @kbd{C-u r}) +frequently while editing the index from the @file{*Index*} +buffer. + +@kindex ? +Here is a list of special commands available in the @file{*Index*} buffer. A +summary of this information is always available by pressing +@kbd{?}. + +@table @kbd +@tablesubheading{General} +@item ? +Display a summary of commands. + +@item 0-9, - +Prefix argument. + +@tablesubheading{Moving around} +@item ! A..Z +Pressing any capital letter will jump to the corresponding section in +the @file{*Index*} buffer. The exclamation mark is special and jumps to +the first entries alphabetically sorted below @samp{A}. These are +usually non-alphanumeric characters. +@item n +Go to next entry. +@item p +Go to previous entry. + +@tablesubheading{Access to document locations} +@item @key{SPC} +Show the place in the document where this index entry is defined. + +@item @key{TAB} +Go to the definition of the current index entry in another +window. + +@item @key{RET} +Go to the definition of the current index entry and hide the +@file{*Index*} buffer window. + +@item f +@vindex reftex-index-follow-mode +@vindex reftex-revisit-to-follow +Toggle follow mode. When follow mode is active, the other window will +always show the location corresponding to the line in the @file{*Index*} +buffer at point. This is similar to pressing @key{SPC} after each +cursor motion. The default for this flag can be set with the variable +@code{reftex-index-follow-mode}. Note that only context in files +already visited is shown. @b{Ref@TeX{}} will not visit a file just for +follow mode. See, however, the variable +@code{reftex-revisit-to-follow}. + +@tablesubheading{Entry editing} +@item e +Edit the current index entry. In the minibuffer, you can edit the +index macro which defines this entry. + +@item C-k +Kill the index entry. Currently not implemented because I don't know +how to implement an @code{undo} function for this. + +@item * +Edit the @var{key} part of the entry. This is the initial part of the +entry which determines the location of the entry in the index. + +@item | +Edit the @var{attribute} part of the entry. This is the part after the +vertical bar. With @code{MakeIndex}, this part is an encapsulating +macro. With @code{xindy}, it is called @emph{attribute} and is a +property of the index entry that can lead to special formatting. When +called with @kbd{C-u} prefix, kill the entire @var{attribute} +part. + +@item @@ +Edit the @var{visual} part of the entry. This is the part after the +@samp{@@} which is used by @code{MakeIndex} to change the visual +appearance of the entry in the index. When called with @kbd{C-u} +prefix, kill the entire @var{visual} part. + +@item ( +Toggle the beginning of page range property @samp{|(} of the +entry. + +@item ) +Toggle the end of page range property @samp{|)} of the entry. + +@item _ +Make the current entry a subentry. This command will prompt for the +superordinate entry and insert it. + +@item ^ +Remove the highest superordinate entry. If the current entry is a +subitem (@samp{aaa!bbb!ccc}), this function moves it up the hierarchy +(@samp{bbb!ccc}). + +@tablesubheading{Exiting} +@item q +Hide the @file{*Index*} buffer. + +@item k +Kill the @file{*Index*} buffer. + +@item C-c = +Switch to the Table of Contents buffer of this document. + +@tablesubheading{Controlling what gets displayed} +@item c +@vindex reftex-index-include-context +Toggle the display of short context in the @file{*Index*} buffer. The +default for this flag can be set with the variable +@code{reftex-index-include-context}. + +@item @} +Restrict the index to a single document section. The corresponding +section number will be displayed in the @code{R<>} indicator in the +mode line and in the header of the @file{*Index*} buffer. + +@item @{ +Widen the index to contain all entries of the document. + +@item < +When the index is currently restricted, move the restriction to the +previous section. + +@item > +When the index is currently restricted, move the restriction to the +next section. + +@tablesubheading{Updating the buffer} +@item g +Rebuild the @file{*Index*} buffer. This does @emph{not} rescan the +document. However, it sorts the entries again, so that edited entries +will move to the correct position. + +@item r +@vindex reftex-enable-partial-scans +Reparse the LaTeX document and rebuild the @file{*Index*} buffer. When +@code{reftex-enable-partial-scans} is non-@code{nil}, rescan only the file this +location is defined in, not the entire document. + +@item C-u r +Reparse the @emph{entire} LaTeX document and rebuild the @file{*Index*} +buffer. + +@item s +Switch to a different index (for documents with multiple +indices). +@end table + + +@node Builtin Index Macros, Defining Index Macros, Displaying and Editing the Index, Index Support +@section Builtin Index Macros +@cindex Builtin index macros +@cindex Index macros, builtin +@vindex reftex-index-macros +@cindex @code{multind}, LaTeX package +@cindex @code{index}, LaTeX package +@cindex LaTeX packages, @code{multind} +@cindex LaTeX packages, @code{index} + +@b{Ref@TeX{}} by default recognizes the @code{\index} and +@code{\glossary} macros which are defined in the LaTeX core. It has +also builtin support for the re-implementations of @code{\index} +in the @file{multind} and @file{index} packages. However, since +the different definitions of the @code{\index} macro are incompatible, +you will have to explicitly specify the index style used. +@xref{Creating Index Entries}, for information on how to do that. + +@node Defining Index Macros, , Builtin Index Macros, Index Support +@section Defining Index Macros +@cindex Defining Index Macros +@cindex Index macros, defining +@vindex reftex-index-macros + +When writing a document with an index you will probably define +additional macros which make entries into the index. +Let's look at an example. + +@example +\newcommand@{\ix@}[1]@{#1\index@{#1@}@} +\newcommand@{\nindex@}[1]@{\textit@{#1@}\index[name]@{#1@}@} +\newcommand@{\astobj@}[1]@{\index@{Astronomical Objects!#1@}@} +@end example + +The first macro @code{\ix} typesets its argument in the text and places +it into the index. The second macro @code{\nindex} typesets its +argument in the text and places it into a separate index with the tag +@samp{name}@footnote{We are using the syntax of the @file{index} package +here.}. The last macro also places its argument into the index, but as +subitems under the main index entry @samp{Astronomical Objects}. Here +is how to make @b{Ref@TeX{}} recognize and correctly interpret these +macros, first with Emacs Lisp. + +@lisp +(setq reftex-index-macros + '(("\\ix@{*@}" "idx" ?x "" nil nil) + ("\\nindex@{*@}" "name" ?n "" nil nil) + ("\\astobj@{*@}" "idx" ?o "Astronomical Objects!" nil t))) +@end lisp + +Note that the index tag is @samp{idx} for the main index, and +@samp{name} for the name index. @samp{idx} and @samp{glo} are reserved +for the default index and for the glossary. + +The character arguments @code{?x}, @code{?n}, and @code{?o} are for +quick identification of these macros when @b{Ref@TeX{}} inserts new +index entries with @code{reftex-index}. These codes need to be +unique. @code{?i}, @code{?I}, and @code{?g} are reserved for the +@code{\index}, @code{\index*}, and @code{\glossary} macros, +respectively. + +The following string is empty unless your macro adds a superordinate +entry to the index key - this is the case for the @code{\astobj} macro. + +The next entry can be a hook function to exclude certain matches, it +almost always can be @code{nil}. + +The final element in the list indicates if the text being indexed needs +to be repeated outside the macro. For the normal index macros, this +should be @code{t}. Only if the macro typesets the entry in the text +(like @code{\ix} and @code{\nindex} in the example do), this should be +@code{nil}. + +To do the same thing with customize, you need to fill in the templates +like this: + +@example +Repeat: +[INS] [DEL] List: + Macro with args: \ix@{*@} + Index Tag : [Value Menu] String: idx + Access Key : x + Key Prefix : + Exclusion hook : nil + Repeat Outside : [Toggle] off (nil) +[INS] [DEL] List: + Macro with args: \nindex@{*@} + Index Tag : [Value Menu] String: name + Access Key : n + Key Prefix : + Exclusion hook : nil + Repeat Outside : [Toggle] off (nil) +[INS] [DEL] List: + Macro with args: \astobj@{*@} + Index Tag : [Value Menu] String: idx + Access Key : o + Key Prefix : Astronomical Objects! + Exclusion hook : nil + Repeat Outside : [Toggle] on (non-nil) +[INS] +@end example + +With the macro @code{\ix} defined, you may want to change the default +macro used for indexing a text phrase (@pxref{Creating Index Entries}). +This would be done like this + +@lisp +(setq reftex-index-default-macro '(?x "idx")) +@end lisp + +which specifies that the macro identified with the character @code{?x} (the +@code{\ix} macro) should be used for indexing phrases and words already +in the buffer with @kbd{C-c /} (@code{reftex-index-selection-or-word}). +The index tag is "idx". + +@node Viewing Cross-References, RefTeXs Menu, Index Support, Top +@chapter Viewing Cross--References +@findex reftex-view-crossref +@findex reftex-mouse-view-crossref +@kindex C-c & +@kindex S-mouse-2 + +@b{Ref@TeX{}} can display cross--referencing information. This means, +if two document locations are linked, @b{Ref@TeX{}} can display the +matching location(s) in another window. The @code{\label} and @code{\ref} +macros are one way of establishing such a link. Also, a @code{\cite} +macro is linked to the corresponding @code{\bibitem} macro or a BibTeX +database entry. + +The feature is invoked by pressing @kbd{C-c &} +(@code{reftex-view-crossref}) while point is on the @var{key} argument +of a macro involved in cross--referencing. You can also click with +@kbd{S-mouse-2} on the macro argument. Here is what will happen for +individual classes of macros: + +@table @asis + +@item @code{\ref} +@cindex @code{\ref} +Display the corresponding label definition. All usual +variants@footnote{all macros that start with @samp{ref} or end with +@samp{ref} or @samp{refrange}} of the @code{\ref} macro are active for +cross--reference display. This works also for labels defined in an +external document when the current document refers to them through the +@code{xr} interface (@pxref{xr (LaTeX package)}). + +@item @code{\label} +@cindex @code{\label} +@vindex reftex-label-alist +Display a document location which references this label. Pressing +@kbd{C-c &} several times moves through the entire document and finds +all locations. Not only the @code{\label} macro but also other macros +with label arguments (as configured with @code{reftex-label-alist}) are +active for cross--reference display. + +@item @code{\cite} +@cindex @code{\cite} +Display the corresponding BibTeX database entry or @code{\bibitem}. +All usual variants@footnote{all macros that either start or end with +@samp{cite}} of the @code{\cite} macro are active for cross--reference +display. + +@item @code{\bibitem} +@cindex @code{\bibitem} +Display a document location which cites this article. Pressing +@kbd{C-c &} several times moves through the entire document and finds +all locations. + +@item BibTeX +@cindex BibTeX buffer, viewing cite locations from +@cindex Viewing cite locations from BibTeX buffer +@kbd{C-c &} is also active in BibTeX buffers. All locations in a +document where the database entry at point is cited will be displayed. +On first use, @b{Ref@TeX{}} will prompt for a buffer which belongs to +the document you want to search. Subsequent calls will use the same +document, until you break this link with a prefix argument to @kbd{C-c +&}. + +@item @code{\index} +@cindex @code{\index} +Display other locations in the document which are marked by an index +macro with the same key argument. Along with the standard @code{\index} +and @code{\glossary} macros, all macros configured in +@code{reftex-index-macros} will be recognized. +@end table + +@vindex reftex-view-crossref-extra +While the display of cross referencing information for the above +mentioned macros is hard--coded, you can configure additional relations +in the variable @code{reftex-view-crossref-extra}. + +@iftex +@chapter All the Rest +@end iftex + +@node RefTeXs Menu, Key Bindings, Viewing Cross-References, Top +@section @b{Ref@TeX{}}'s Menu +@cindex RefTeXs Menu +@cindex Menu, in the menu bar + +@b{Ref@TeX{}} installs a @code{Ref} menu in the menu bar on systems +which support this. From this menu you can access all of +@b{Ref@TeX{}}'s commands and a few of its options. There is also a +@code{Customize} submenu which can be used to access @b{Ref@TeX{}}'s +entire set of options. + +@node Key Bindings, Faces, RefTeXs Menu, Top +@section Default Key Bindings +@cindex Key Bindings, summary + +Here is a summary of the available key bindings. + +@kindex C-c = +@kindex C-c - +@kindex C-c ( +@kindex C-c ) +@kindex C-c [ +@kindex C-c & +@kindex S-mouse-2 +@kindex C-c / +@kindex C-c \ +@kindex C-c | +@kindex C-c < +@kindex C-c > +@example +@kbd{C-c =} @code{reftex-toc} +@kbd{C-c -} @code{reftex-toc-recenter} +@kbd{C-c (} @code{reftex-label} +@kbd{C-c )} @code{reftex-reference} +@kbd{C-c [} @code{reftex-citation} +@kbd{C-c &} @code{reftex-view-crossref} +@kbd{S-mouse-2} @code{reftex-mouse-view-crossref} +@kbd{C-c /} @code{reftex-index-selection-or-word} +@kbd{C-c \} @code{reftex-index-phrase-selection-or-word} +@kbd{C-c |} @code{reftex-index-visit-phrases-buffer} +@kbd{C-c <} @code{reftex-index} +@kbd{C-c >} @code{reftex-display-index} +@end example + +Note that the @kbd{S-mouse-2} binding is only provided if this key is +not already used by some other package. @b{Ref@TeX{}} will not override an +existing binding to @kbd{S-mouse-2}. + +Personally, I also bind some functions in the users @kbd{C-c} map for +easier access. + +@c FIXME: Do we need bindings for the Index macros here as well? +@c C-c i C-c I or so???? +@c How about key bindings for reftex-reset-mode and reftex-parse-document? +@kindex C-c t +@kindex C-c l +@kindex C-c r +@kindex C-c c +@kindex C-c v +@kindex C-c s +@kindex C-c g +@example +@kbd{C-c t} @code{reftex-toc} +@kbd{C-c l} @code{reftex-label} +@kbd{C-c r} @code{reftex-reference} +@kbd{C-c c} @code{reftex-citation} +@kbd{C-c v} @code{reftex-view-crossref} +@kbd{C-c s} @code{reftex-search-document} +@kbd{C-c g} @code{reftex-grep-document} +@end example + +@noindent These keys are reserved for the user, so I cannot bind them by +default. If you want to have these key bindings available, set in your +@file{.emacs} file: + +@vindex reftex-extra-bindings +@lisp +(setq reftex-extra-bindings t) +@end lisp + +@vindex reftex-load-hook +Changing and adding to @b{Ref@TeX{}}'s key bindings is best done in the hook +@code{reftex-load-hook}. For information on the keymaps +which should be used to add keys, see @ref{Keymaps and Hooks}. + +@node Faces, AUCTeX, Key Bindings, Top +@section Faces +@cindex Faces + +@b{Ref@TeX{}} uses faces when available to structure the selection and +table of contents buffers. It does not create its own faces, but uses +the ones defined in @file{font-lock.el}. Therefore, @b{Ref@TeX{}} will +use faces only when @code{font-lock} is loaded. This seems to be +reasonable because people who like faces will very likely have it +loaded. If you wish to turn off fontification or change the involved +faces, see @ref{Options (Fontification)}. + +@node Multifile Documents, Language Support, AUCTeX, Top +@section Multifile Documents +@cindex Multifile documents +@cindex Documents, spread over files + +The following is relevant when working with documents spread over many +files: + +@itemize @bullet +@item +@b{Ref@TeX{}} has full support for multifile documents. You can edit parts of +several (multifile) documents at the same time without conflicts. +@b{Ref@TeX{}} provides functions to run @code{grep}, @code{search} and +@code{query-replace} on all files which are part of a multifile +document. + +@item +@vindex tex-main-file +@vindex TeX-master +All files belonging to a multifile document should define a File +Variable (@code{TeX-master} for AUCTeX or @code{tex-main-file} for the +standard Emacs LaTeX mode) containing the name of the master file. For +example, to set the file variable @code{TeX-master}, include something +like the following at the end of each TeX file: + +@example +%%% Local Variables: *** +%%% mode:latex *** +%%% TeX-master: "thesis.tex" *** +%%% End: *** +@end example + +AUCTeX with the setting + +@lisp +(setq-default TeX-master nil) +@end lisp + +will actually ask you for each new file about the master file and insert +this comment automatically. For more details see the documentation of +the AUCTeX (@pxref{Multifile,,,auctex, The AUC TeX User Manual}), the +documentation about the Emacs (La)TeX mode (@pxref{TeX Print,,,emacs, +The GNU Emacs Manual}) and the Emacs documentation on File Variables +(@pxref{File Variables,,,emacs, The GNU Emacs Manual}). + +@item +The context of a label definition must be found in the same file as the +label itself in order to be processed correctly by @b{Ref@TeX{}}. The only +exception is that section labels referring to a section statement +outside the current file can still use that section title as +context. +@end itemize + +@node Language Support, Finding Files, Multifile Documents, Top +@section Language Support +@cindex Language support + +Some parts of @b{Ref@TeX{}} are language dependent. The default +settings work well for English. If you are writing in a different +language, the following hints may be useful: + +@itemize @bullet +@item +@vindex reftex-derive-label-parameters +@vindex reftex-abbrev-parameters +The mechanism to derive a label from context includes the abbreviation +of words and omission of unimportant words. These mechanisms may have +to be changed for other languages. See the variables +@code{reftex-derive-label-parameters} and @code{reftex-abbrev-parameters}. + +@item +@vindex reftex-translate-to-ascii-function +@vindex reftex-label-illegal-re +Also, when a label is derived from context, @b{Ref@TeX{}} clears the +context string from non-ASCII characters in order to make a valid label. +If there should ever be a version of @TeX{} which allows extended +characters @emph{in labels}, then we will have to look at the +variables @code{reftex-translate-to-ascii-function} and +@code{reftex-label-illegal-re}. + +@item +When a label is referenced, @b{Ref@TeX{}} looks at the word before point +to guess which label type is required. These @emph{magic words} are +different in every language. For an example of how to add magic words, +see @ref{Adding Magic Words}. + +@vindex reftex-multiref-punctuation +@vindex reftex-cite-punctuation +@item +@b{Ref@TeX{}} inserts ``punctuation'' for multiple references and +for the author list in citations. Some of this may be language +dependent. See the variables @code{reftex-multiref-punctuation} and +@code{reftex-cite-punctuation}. +@end itemize + +@node Finding Files, Optimizations, Language Support, Top +@section Finding Files +@cindex Finding files + +In order to find files included in a document via @code{\input} or +@code{\include}, @b{Ref@TeX{}} searches all directories specified in the +environment variable @code{TEXINPUTS}. Similarly, it will search the +path specified in the variables @code{BIBINPUTS} and @code{TEXBIB} for +BibTeX database files. + +When searching, @b{Ref@TeX{}} will also expand recursive path +definitions (directories ending in @samp{//} or @samp{!!}). But it will +only search and expand directories @emph{explicitly} given in these +variables. This may cause problems under the following circumstances: + +@itemize @bullet +@item +Most TeX system have a default search path for both TeX files and BibTeX +files which is defined in some setup file. Usually this default path is +for system files which @b{Ref@TeX{}} does not need to see. But if your +document needs TeX files or BibTeX database files in a directory only +given in the default search path, @b{Ref@TeX{}} will fail to find them. +@item +Some TeX systems do not use environment variables at all in order to +specify the search path. Both default and user search path are then +defined in setup files. +@end itemize + +@noindent +There are three ways to solve this problem: + +@itemize @bullet +@item +Specify all relevant directories explicitly in the environment +variables. If for some reason you don't want to mess with the default +variables @code{TEXINPUTS} and @code{BIBINPUTS}, define your own +variables and configure @b{Ref@TeX{}} to use them instead: + +@lisp +(setq reftex-texpath-environment-variables '("MYTEXINPUTS")) +(setq reftex-bibpath-environment-variables '("MYBIBINPUTS")) +@end lisp + +@item +Specify the full search path directly in @b{Ref@TeX{}}'s variables. + +@lisp +(setq reftex-texpath-environment-variables + '("./inp:/home/cd/tex//:/usr/local/tex//")) +(setq reftex-bibpath-environment-variables + '("/home/cd/tex/lit/")) +@end lisp + +@item +Some TeX systems provide stand--alone programs to do the file search just +like TeX and BibTeX. E.g. Thomas Esser's @code{teTeX} uses the +@code{kpathsearch} library which provides the command @code{kpsewhich} +to search for files. @b{Ref@TeX{}} can be configured to use this +program. Note that the exact syntax of the @code{kpsewhich} +command depends upon the version of that program. + +@lisp +(setq reftex-use-external-file-finders t) +(setq reftex-external-file-finders + '(("tex" . "kpsewhich -format=.tex %f") + ("bib" . "kpsewhich -format=.bib %f"))) +@end lisp +@end itemize + +@cindex Noweb files +@vindex reftex-file-extensions +@vindex TeX-file-extensions +Some people like to use RefTeX with noweb files, which usually have the +extension @file{.nw}. In order to deal with such files, the new +extension must be added to the list of valid extensions in the variable +@code{reftex-file-extensions}. When working with AUCTeX as major mode, +the new extension must also be known to AUCTeX via the variable +@code{TeX-file-extension}. For example: + +@lisp +(setq reftex-file-extensions + '(("nw" "tex" ".tex" ".ltx") ("bib" ".bib"))) +(setq TeX-file-extensions + '( "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo")) +@end lisp + +@node Optimizations, Problems and Work-Arounds, Finding Files, Top +@section Optimizations +@cindex Optimizations + +@b{Note added 2002. Computers have gotten a lot faster, so most of the +optimizations discussed below will not be necessary on new machines. I +am leaving this stuff in the manual for people who want to write thick +books, where some of it still might be useful.} + +Implementing the principle of least surprises, the default settings of +@b{Ref@TeX{}} ensure a safe ride for beginners and casual users. However, +when using @b{Ref@TeX{}} for a large project and/or on a small computer, +there are ways to improve speed or memory usage. + +@itemize @bullet +@item +@b{Removing Lookup Buffers}@* +@cindex Removing lookup buffers +@b{Ref@TeX{}} will load other parts of a multifile document as well as BibTeX +database files for lookup purposes. These buffers are kept, so that +subsequent use of the same files is fast. If you can't afford keeping +these buffers around, and if you can live with a speed penalty, try + +@vindex reftex-keep-temporary-buffers +@lisp +(setq reftex-keep-temporary-buffers nil) +@end lisp + +@item +@b{Partial Document Scans}@* +@cindex Partial documents scans +@cindex Document scanning, partial +A @kbd{C-u} prefix on the major @b{Ref@TeX{}} commands @code{reftex-label} +(@kbd{C-u C-c (}), @code{reftex-reference} (@kbd{C-u C-c )}), +@code{reftex-citation} (@kbd{C-u C-c [}), @code{reftex-toc} (@kbd{C-u C-c +=}), and @code{reftex-view-crossref} (@kbd{C-u C-c &}) initiates +re-parsing of the entire document in order to update the parsing +information. For a large document this can be unnecessary, in +particular if only one file has changed. @b{Ref@TeX{}} can be configured +to do partial scans instead of full ones. @kbd{C-u} re-parsing then +does apply only to the current buffer and files included from it. +Likewise, the @kbd{r} key in both the label selection buffer and the +table-of-contents buffer will only prompt scanning of the file in which +the label or section macro near the cursor was defined. Re-parsing of +the entire document is still available by using @kbd{C-u C-u} as a +prefix, or the capital @kbd{R} key in the menus. To use this feature, +try + +@vindex reftex-enable-partial-scans +@lisp +(setq reftex-enable-partial-scans t) +@end lisp + +@item +@b{Saving Parser Information}@* +@cindex Saving parser information +@cindex Parse information, saving to a file +@vindex reftex-parse-file-extension +Even with partial scans enabled, @b{Ref@TeX{}} still has to make one full +scan, when you start working with a document. To avoid this, parsing +information can be stored in a file. The file @file{MASTER.rel} is used +for storing information about a document with master file +@file{MASTER.tex}. It is written automatically when you kill a buffer +in @code{reftex-mode} or when you exit Emacs. The information is +restored when you begin working with a document in a new editing +session. To use this feature, put into @file{.emacs}: + +@vindex reftex-save-parse-info +@lisp +(setq reftex-save-parse-info t) +@end lisp + +@item +@b{Identifying label types by prefix}@* +@cindex Parse information, saving to a file +@vindex reftex-trust-label-prefix +@b{Ref@TeX{}} normally parses around each label to check in which +environment this label is located, in order to assign a label type to +the label. If your document contains thousands of labels, document +parsing will take considerable time. If you have been using label prefixes +like tab: and fn: consistently, you can tell @b{Ref@TeX{}} to get the +label type directly from the prefix, without additional parsing. This +will be faster and also allow labels to end up in the correct category +if for some reason it is not possible to derive the correct type from +context. For example, to enable this feature for footnote and +equation labels, use + +@lisp +(setq reftex-trust-label-prefix '("fn:" "eq:")) +@end lisp + +@item +@b{Automatic Document Scans}@* +@cindex Automatic document scans +@cindex Document scanning, automatic +At rare occasions, @b{Ref@TeX{}} will automatically rescan a part of the +document. If this gets into your way, it can be turned off with + +@vindex reftex-allow-automatic-rescan +@lisp +(setq reftex-allow-automatic-rescan nil) +@end lisp + +@b{Ref@TeX{}} will then occasionally annotate new labels in the selection +buffer, saying that their position in the label list in uncertain. A +manual document scan will fix this. + +@item +@b{Multiple Selection Buffers}@* +@cindex Multiple selection buffers +@cindex Selection buffers, multiple +Normally, the selection buffer @file{*RefTeX Select*} is re-created for +every selection process. In documents with very many labels this can +take several seconds. @b{Ref@TeX{}} provides an option to create a +separate selection buffer for each label type and to keep this buffer +from one selection to the next. These buffers are updated automatically +only when a new label has been added in the buffers category with +@code{reftex-label}. Updating the buffer takes as long as recreating it +- so the time saving is limited to cases where no new labels of that +category have been added. To turn on this feature, use + +@vindex reftex-use-multiple-selection-buffers +@lisp +(setq reftex-use-multiple-selection-buffers t) +@end lisp + +@noindent +@cindex Selection buffers, updating +You can also inhibit the automatic updating entirely. Then the +selection buffer will always pop up very fast, but may not contain the +most recently defined labels. You can always update the buffer by hand, +with the @kbd{g} key. To get this behavior, use instead + +@vindex reftex-auto-update-selection-buffers +@lisp +(setq reftex-use-multiple-selection-buffers t + reftex-auto-update-selection-buffers nil) +@end lisp +@end itemize + +@need 2000 +@noindent +@b{As a summary}, here are the settings I recommend for heavy use of +@b{Ref@TeX{}} with large documents: + +@lisp +@group +(setq reftex-enable-partial-scans t + reftex-save-parse-info t + reftex-use-multiple-selection-buffers t) +@end group +@end lisp + +@node AUCTeX, Multifile Documents, Faces, Top +@section AUC@TeX{} +@cindex @code{AUCTeX}, Emacs package +@cindex Emacs packages, @code{AUCTeX} + +AUCTeX is without doubt the best major mode for editing TeX and LaTeX +files with Emacs (@pxref{Top,AUCTeX,,auctex, The AUCTeX User Manual}). +If AUCTeX is not part of your Emacs distribution, you can get +it@footnote{XEmacs 21.x users may want to install the corresponding +XEmacs package.} by ftp from the @value{AUCTEXSITE}. + +@menu +* AUCTeX-RefTeX Interface:: How both packages work together +* Style Files:: AUCTeX's style files can support RefTeX +* Bib-Cite:: Hypertext reading of a document +@end menu + +@node AUCTeX-RefTeX Interface, Style Files, , AUCTeX +@subsection The AUC@TeX{}-@b{Ref@TeX{}} Interface + +@b{Ref@TeX{}} contains code to interface with AUCTeX. When this +interface is turned on, both packages will interact closely. Instead of +using @b{Ref@TeX{}}'s commands directly, you can then also use them +indirectly as part of the AUCTeX +environment@footnote{@b{Ref@TeX{}} 4.0 and AUCTeX 9.10c will be +needed for all of this to work. Parts of it work also with earlier +versions.}. The interface is turned on with + +@lisp +(setq reftex-plug-into-AUCTeX t) +@end lisp + +If you need finer control about which parts of the interface are used +and which not, read the docstring of the variable +@code{reftex-plug-into-AUCTeX} or customize it with @kbd{M-x +customize-variable @key{RET} reftex-plug-into-AUCTeX @key{RET}}. + +The following list describes the individual parts of the interface. + +@itemize @bullet +@item +@findex reftex-label +@vindex LaTeX-label-function, @r{AUCTeX} +@kindex C-c C-e +@kindex C-c C-s +@findex LaTeX-section, @r{AUCTeX} +@findex TeX-insert-macro, @r{AUCTeX} +@b{AUCTeX calls @code{reftex-label} to insert labels}@* +When a new section is created with @kbd{C-c C-s}, or a new environment +is inserted with @kbd{C-c C-e}, AUCTeX normally prompts for a label to +go with it. With the interface, @code{reftex-label} is called instead. +For example, if you type @kbd{C-c C-e equation @key{RET}}, AUCTeX and +@b{Ref@TeX{}} will insert + +@example +\begin@{equation@} +\label@{eq:1@} + +\end@{equation@} +@end example + +@noindent +without further prompts. + +Similarly, when you type @kbd{C-c C-s section @key{RET}}, @b{Ref@TeX{}} +will offer its default label which is derived from the section title. + +@item +@b{AUCTeX tells @b{Ref@TeX{}} about new sections}@* +When creating a new section with @kbd{C-c C-s}, @b{Ref@TeX{}} will not +have to rescan the buffer in order to see it. + +@item +@findex reftex-arg-label +@findex TeX-arg-label, @r{AUCTeX function} +@findex reftex-arg-ref +@findex TeX-arg-ref, @r{AUCTeX function} +@findex reftex-arg-cite +@findex TeX-arg-cite, @r{AUCTeX function} +@findex reftex-arg-index +@findex TeX-arg-index, @r{AUCTeX function} +@findex TeX-insert-macro, @r{AUCTeX function} +@kindex C-c @key{RET} +@b{@b{Ref@TeX{}} supplies macro arguments}@* When you insert a macro +interactively with @kbd{C-c @key{RET}}, AUCTeX normally prompts for +macro arguments. Internally, it uses the functions +@code{TeX-arg-label}, @code{TeX-arg-cite}, and @code{TeX-arg-index} to +prompt for arguments which are labels, citation keys and index entries. +The interface takes over these functions@footnote{@code{fset} is used to +do this, which is not reversible. However, @b{Ref@TeX{}} implements the +old functionality when you later decide to turn off the interface.} and +supplies the macro arguments with @b{Ref@TeX{}'s} mechanisms. For +example, when you type @kbd{C-c @key{RET} ref @key{RET}}, @b{Ref@TeX{}} +will supply its label selection process (@pxref{Referencing +Labels}). + +@item +@b{@b{Ref@TeX{}} tells AUCTeX about new labels, citation-- and index keys}@* +@b{Ref@TeX{}} will add all newly created labels to AUCTeX's completion list. +@end itemize + +@node Style Files, Bib-Cite, AUCTeX-RefTeX Interface, AUCTeX +@subsection Style Files +@cindex Style files, AUCTeX +@findex TeX-add-style-hook, @r{AUCTeX} +Style files are Emacs Lisp files which are evaluated by AUCTeX in +association with the @code{\documentclass} and @code{\usepackage} +commands of a document (@pxref{Style Files,,,auctex}). Support for +@b{Ref@TeX{}} in such a style file is useful when the LaTeX style +defines macros or environments connected with labels, citations, or the +index. Many style files (e.g. @file{amsmath.el} or @file{natbib.el}) +distributed with AUCTeX already support @b{Ref@TeX{}} in this +way. + +Before calling a @b{Ref@TeX{}} function, the style hook should always +test for the availability of the function, so that the style file will +also work for people who do not use @b{Ref@TeX{}}. + +Additions made with style files in the way described below remain local +to the current document. For example, if one package uses AMSTeX, the +style file will make @b{Ref@TeX{}} switch over to @code{\eqref}, but +this will not affect other documents. + +@findex reftex-add-label-environments +@findex reftex-add-to-label-alist +A style hook may contain calls to +@code{reftex-add-label-environments}@footnote{This used to be the +function @code{reftex-add-to-label-alist} which is still available as an +alias for compatibility.} which defines additions to +@code{reftex-label-alist}. The argument taken by this function must have +the same format as @code{reftex-label-alist}. The @file{amsmath.el} +style file of AUCTeX for example contains the following: + +@lisp +@group +(TeX-add-style-hook "amsmath" + (lambda () + (if (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments '(AMSTeX))))) +@end group +@end lisp + +@noindent +@findex LaTeX-add-environments, @r{AUCTeX} +while a package @code{myprop} defining a @code{proposition} environment +with @code{\newtheorem} might use + +@lisp +@group +(TeX-add-style-hook "myprop" + (lambda () + (LaTeX-add-environments '("proposition" LaTeX-env-label)) + (if (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments + '(("proposition" ?p "prop:" "~\\ref@{%s@}" t + ("Proposition" "Prop.") -3)))))) +@end group +@end lisp + +@findex reftex-set-cite-format +Similarly, a style hook may contain a call to +@code{reftex-set-cite-format} to set the citation format. The style +file @file{natbib.el} for the Natbib citation style does switch +@b{Ref@TeX{}}'s citation format like this: + +@lisp +(TeX-add-style-hook "natbib" + (lambda () + (if (fboundp 'reftex-set-cite-format) + (reftex-set-cite-format 'natbib)))) +@end lisp + +@findex reftex-add-index-macros +The hook may contain a call to @code{reftex-add-index-macros} to +define additional @code{\index}-like macros. The argument must have +the same format as @code{reftex-index-macros}. It may be a symbol, to +trigger support for one of the builtin index packages. For example, +the style @file{multind.el} contains + +@lisp +(TeX-add-style-hook "multind" + (lambda () + (and (fboundp 'reftex-add-index-macros) + (reftex-add-index-macros '(multind))))) +@end lisp + +If you have your own package @file{myindex} which defines the +following macros to be used with the LaTeX @file{index.sty} file +@example +\newcommand@{\molec@}[1]@{#1\index@{Molecules!#1@}@} +\newcommand@{\aindex@}[1]@{#1\index[author]@{#1@} +@end example + +you could write this in the style file @file{myindex.el}: + +@lisp +(TeX-add-style-hook "myindex" + (lambda () + (TeX-add-symbols + '("molec" TeX-arg-index) + '("aindex" TeX-arg-index)) + (if (fboundp 'reftex-add-index-macros) + (reftex-add-index-macros + '(("molec@{*@}" "idx" ?m "Molecules!" nil nil) + ("aindex@{*@}" "author" ?a "" nil nil)))))) +@end lisp + +@findex reftex-add-section-levels +Finally the hook may contain a call to @code{reftex-add-section-levels} +to define additional section statements. For example, the FoilTeX class +has just two headers, @code{\foilhead} and @code{\rotatefoilhead}. Here +is a style file @file{foils.el} that will inform @b{Ref@TeX{}} about these: + +@lisp +(TeX-add-style-hook "foils" + (lambda () + (if (fboundp 'reftex-add-section-levels) + (reftex-add-section-levels '(("foilhead" . 3) + ("rotatefoilhead" . 3)))))) +@end lisp + +@node Bib-Cite, , Style Files, AUCTeX +@subsection Bib-Cite +@cindex @code{bib-cite}, Emacs package +@cindex Emacs packages, @code{bib-cite} + +Once you have written a document with labels, references and citations, +it can be nice to read it like a hypertext document. @b{Ref@TeX{}} has +support for that: @code{reftex-view-crossref} (bound to @kbd{C-c +&}), @code{reftex-mouse-view-crossref} (bound to @kbd{S-mouse-2}), and +@code{reftex-search-document}. A somewhat fancier interface with mouse +highlighting is provided (among other things) by Peter S. Galbraith's +@file{bib-cite.el}. There is some overlap in the functionalities of +Bib-cite and @b{Ref@TeX{}}. Bib-cite.el comes bundled with +AUCTeX. + +Bib-cite version 3.06 and later can be configured so that bib-cite's +mouse functions use @b{Ref@TeX{}} for displaying references and citations. +This can be useful in particular when working with the LaTeX @code{xr} +package or with an explicit @code{thebibliography} environment (rather +than BibTeX). Bib-cite cannot handle those, but @b{Ref@TeX{}} does. To +make use of this feature, try + +@vindex bib-cite-use-reftex-view-crossref +@lisp +(setq bib-cite-use-reftex-view-crossref t) +@end lisp + +@page +@node Problems and Work-Arounds, Imprint, Optimizations, Top +@section Problems and Work-arounds +@cindex Problems and work-arounds + +@itemize @bullet +@item +@b{LaTeX commands}@* +@cindex LaTeX commands, not found +@code{\input}, @code{\include}, and @code{\section} (etc.) statements +have to be first on a line (except for white space). + +@item +@b{Commented regions}@* +@cindex Labels, commented out +@b{Ref@TeX{}} sees also labels in regions commented out and will refuse to +make duplicates of such labels. This is considered to be a feature. + +@item +@b{Wrong section numbers}@* +@cindex Section numbers, wrong +@vindex reftex-enable-partial-scans +When using partial scans (@code{reftex-enable-partial-scans}), the section +numbers in the table of contents may eventually become wrong. A full +scan will fix this. + +@item +@b{Local settings}@* +@cindex Settings, local +@findex reftex-add-label-environments +@findex reftex-set-cite-format +@findex reftex-add-section-levels +The label environment definitions in @code{reftex-label-alist} are +global and apply to all documents. If you need to make definitions +local to a document, because they would interfere with settings in other +documents, you should use AUCTeX and set up style files with calls to +@code{reftex-add-label-environments}, @code{reftex-set-cite-format}, +@code{reftex-add-index-macros}, and @code{reftex-add-section-levels}. +Settings made with these functions remain local to the current +document. @xref{AUCTeX}. + +@item +@b{Funny display in selection buffer}@* +@cindex @code{x-symbol}, Emacs package +@cindex Emacs packages, @code{x-symbol} +@cindex @code{isotex}, Emacs package +@cindex Emacs packages, @code{isotex} +@cindex @code{iso-cvt}, Emacs package +@cindex Emacs packages, @code{iso-cvt} +When using packages which make the buffer representation of a file +different from its disk representation (e.g. x-symbol, isotex, +iso-cvt) you may find that @b{Ref@TeX{}}'s parsing information sometimes +reflects the disk state of a file. This happens only in @emph{unvisited} +parts of a multifile document, because @b{Ref@TeX{}} visits these files +literally for speed reasons. Then both short context and section +headings may look different from what you usually see on your screen. +In rare cases @code{reftex-toc} may have problems to jump to an affected +section heading. There are three possible ways to deal with +this: +@itemize @minus +@item +@vindex reftex-keep-temporary-buffers +@code{(setq reftex-keep-temporary-buffers t)}@* +This implies that @b{Ref@TeX{}} will load all parts of a multifile +document into Emacs (i.e. there won't be any temporary buffers). +@item +@vindex reftex-initialize-temporary-buffers +@code{(setq reftex-initialize-temporary-buffers t)}@* +This means full initialization of temporary buffers. It involves +a penalty when the same unvisited file is used for lookup often. +@item +Set @code{reftex-initialize-temporary-buffers} to a list of hook +functions doing a minimal initialization. +@end itemize +@vindex reftex-refontify-context +See also the variable @code{reftex-refontify-context}. + +@item +@b{Labels as arguments to \begin}@* +@cindex @code{pf}, LaTeX package +@cindex LaTeX packages, @code{pf} +Some packages use an additional argument to a @code{\begin} macro +to specify a label. E.g. Lamport's @file{pf.sty} uses both +@example +\step@{@var{label}@}@{@var{claim}@} and \begin@{step+@}@{@var{label}@} + @var{claim} + \end@{step+@} +@end example + +@noindent +We need to trick @b{Ref@TeX{}} into swallowing this: + +@lisp +@group +;; Configuration for Lamport's pf.sty +(setq reftex-label-alist + '(("\\step@{*@}@{@}" ?p "st:" "~\\stepref@{%s@}" 2 ("Step" "St.")) + ("\\begin@{step+@}@{*@}" ?p "st:" "~\\stepref@{%s@}" 1000))) +@end group +@end lisp + +@noindent +The first line is just a normal configuration for a macro. For the +@code{step+} environment we actually tell @b{Ref@TeX{}} to look for the +@emph{macro} @samp{\begin@{step+@}} and interpret the @emph{first} +argument (which really is a second argument to the macro @code{\begin}) +as a label of type @code{?p}. Argument count for this macro starts only +after the @samp{@{step+@}}, also when specifying how to get +context. + +@item +@b{Idle timers in XEmacs}@* +@cindex Idle timer restart +@vindex reftex-use-itimer-in-xemacs +In XEmacs, idle timer restart does not work reliably after fast +keystrokes. Therefore @b{Ref@TeX{}} currently uses the post command +hook to start the timer used for automatic crossref information. When +this bug gets fixed, a real idle timer can be requested with +@lisp +(setq reftex-use-itimer-in-xemacs t) +@end lisp + +@item +@b{Viper mode}@* +@cindex Viper mode +@cindex Key bindings, problems with Viper mode +@findex viper-harness-minor-mode +With @i{Viper} mode prior to Vipers version 3.01, you need to protect +@b{Ref@TeX{}}'s keymaps with + +@lisp +(viper-harness-minor-mode "reftex") +@end lisp + +@end itemize + +@page +@node Imprint, Commands, Problems and Work-Arounds, Top +@section Imprint +@cindex Imprint +@cindex Maintainer +@cindex Acknowledgments +@cindex Thanks +@cindex Bug reports +@cindex @code{http}, @b{Ref@TeX{}} home page +@cindex @code{ftp}, @b{Ref@TeX{}} site + +Ref@TeX{} was written by @i{Carsten Dominik} +@email{dominik@@science.uva.nl}, with contributions by @i{Stephen +Eglen}. Ref@TeX{} is currently maintained by @value{MAINTAINER}, see +the @value{MAINTAINERSITE} for detailed information. + +If you have questions about Ref@TeX{}, you can send email to the +@value{SUPPORTADDRESS}. If you want to contribute code or ideas, write +to the @value{DEVELADDRESS}. And in the rare case of finding a bug, +please use @kbd{M-x reftex-report-bug @key{RET}} which will prepare a +bug report with useful information about your setup. Remember to add +essential information like a recipe for reproducing the bug, what you +expected to happen, and what actually happened. Send the bug report to +the @value{BUGADDRESS}. + +There are also several Usenet groups which have competent readers who +might be able to help: @code{comp.emacs}, @code{gnu.emacs.help}, +@code{comp.emacs.xemacs}, and @code{comp.text.tex}. + +@b{Ref@TeX{}} is bundled and pre-installed with Emacs since version 20.2. +It was also bundled and pre-installed with XEmacs 19.16--20.x. XEmacs +21.x users want to install the corresponding plugin package which is +available from the @value{XEMACSFTP}. See the XEmacs 21.x +documentation on package installation for details. + +Users of earlier Emacs distributions (including Emacs 19) can get a +@b{Ref@TeX{}} distribution from the @value{MAINTAINERSITE}. Note that +the Emacs 19 version supports many but not all features described in +this manual. + +Thanks to the people on the Net who have used @b{Ref@TeX{}} and helped +developing it with their reports. In particular thanks to @i{Ralf +Angeli, Fran Burstall, Alastair Burt, Lars Clausen, Soren Dayton, +Stephen Eglen, Karl Eichwalder, Erik Frisk, Peter Galbraith, Kai +Grossjohann, Frank Harrell, Till A. Heilmann, Peter Heslin, Stephan +Heuel, Alan Ho, Lute Kamstra, Dieter Kraft, David Kastrup, Adrian Lanz, +Juri Linkov, Rory Molinari, Stefan Monnier, Laurent Mugnier, Dan +Nicolaescu, Sudeep Kumar Palat, Daniel Polani, Alan Shutko, Robin Socha, +Richard Stanton, Allan Strand, Jan Vroonhof, Christoph Wedler, Alan +Williams, Roland Winkler, Hans-Christoph Wirth, Eli Zaretskii}. + + +The @code{view-crossref} feature was inspired by @i{Peter Galbraith's} +@file{bib-cite.el}. + +Finally thanks to @i{Uwe Bolick} who first got me interested in +supporting LaTeX labels and references with an editor (which was +MicroEmacs at the time). + +@node Commands, Options, Imprint, Top +@chapter Commands +@cindex Commands, list of + +Here is a summary of @b{Ref@TeX{}}'s commands which can be executed from +LaTeX files. Command which are executed from the special buffers are +not described here. All commands are available from the @code{Ref} +menu. See @xref{Key Bindings}. + +@deffn Command reftex-toc +Show the table of contents for the current document. When called with +one ore two @kbd{C-u} prefixes, rescan the document first. +@end deffn + +@deffn Command reftex-label +Insert a unique label. With one or two @kbd{C-u} prefixes, enforce +document rescan first. +@end deffn + +@deffn Command reftex-reference +Start a selection process to select a label, and insert a reference to +it. With one or two @kbd{C-u} prefixes, enforce document rescan first. +@end deffn + +@deffn Command reftex-citation +Make a citation using BibTeX database files. After prompting for a regular +expression, scans the buffers with BibTeX entries (taken from the +@code{\bibliography} command or a @code{thebibliography} environment) +and offers the matching entries for selection. The selected entry is +formatted according to @code{reftex-cite-format} and inserted into the +buffer. @* +When called with a @kbd{C-u} prefix, prompt for optional arguments in +cite macros. When called with a numeric prefix, make that many citations. +When called with point inside the braces of a @code{\cite} command, it +will add another key, ignoring the value of +@code{reftex-cite-format}. @* +The regular expression uses an expanded syntax: @samp{&&} is interpreted +as @code{and}. Thus, @samp{aaaa&&bbb} matches entries which contain +both @samp{aaaa} and @samp{bbb}. While entering the regexp, completion +on knows citation keys is possible. @samp{=} is a good regular +expression to match all entries in all files. +@end deffn + +@deffn Command reftex-index +Query for an index macro and insert it along with its arguments. The +index macros available are those defined in @code{reftex-index-macro} or +by a call to @code{reftex-add-index-macros}, typically from an AUCTeX +style file. @b{Ref@TeX{}} provides completion for the index tag and the +index key, and will prompt for other arguments. +@end deffn + +@deffn Command reftex-index-selection-or-word +Put current selection or the word near point into the default index +macro. This uses the information in @code{reftex-index-default-macro} +to make an index entry. The phrase indexed is the current selection or +the word near point. When called with one @kbd{C-u} prefix, let the +user have a chance to edit the index entry. When called with 2 +@kbd{C-u} as prefix, also ask for the index macro and other stuff. When +called inside TeX math mode as determined by the @file{texmathp.el} +library which is part of AUCTeX, the string is first processed with the +@code{reftex-index-math-format}, which see. +@end deffn + +@deffn Command reftex-index-phrase-selection-or-word +Add current selection or the word at point to the phrases buffer. +When you are in transient-mark-mode and the region is active, the +selection will be used - otherwise the word at point. +You get a chance to edit the entry in the phrases buffer - to save the +buffer and return to the LaTeX document, finish with @kbd{C-c C-c}. +@end deffn + +@deffn Command reftex-index-visit-phrases-buffer +Switch to the phrases buffer, initialize if empty. +@end deffn + +@deffn Command reftex-index-phrases-apply-to-region +Index all index phrases in the current region. +This works exactly like global indexing from the index phrases buffer, +but operation is restricted to the current region. +@end deffn + +@deffn Command reftex-display-index +Display a buffer with an index compiled from the current document. +When the document has multiple indices, first prompts for the correct one. +When index support is turned off, offer to turn it on. +With one or two @kbd{C-u} prefixes, rescan document first. +With prefix 2, restrict index to current document section. +With prefix 3, restrict index to active region. +@end deffn + +@deffn Command reftex-view-crossref +View cross reference of macro at point. Point must be on the @var{key} +argument. Works with the macros @code{\label}, @code{\ref}, +@code{\cite}, @code{\bibitem}, @code{\index} and many derivatives of +these. Where it makes sense, subsequent calls show additional +locations. See also the variable @code{reftex-view-crossref-extra} and +the command @code{reftex-view-crossref-from-bibtex}. With one or two +@kbd{C-u} prefixes, enforce rescanning of the document. With argument +2, select the window showing the cross reference. +@end deffn + +@deffn Command reftex-view-crossref-from-bibtex +View location in a LaTeX document which cites the BibTeX entry at point. +Since BibTeX files can be used by many LaTeX documents, this function +prompts upon first use for a buffer in @b{Ref@TeX{}} mode. To reset this +link to a document, call the function with a prefix arg. Calling +this function several times find successive citation locations. +@end deffn + +@deffn Command reftex-create-tags-file +Create TAGS file by running @code{etags} on the current document. The +TAGS file is also immediately visited with +@code{visit-tags-table}. +@end deffn + +@deffn Command reftex-grep-document +Run grep query through all files related to this document. +With prefix arg, force to rescan document. +No active TAGS table is required. +@end deffn + +@deffn Command reftex-search-document +Regexp search through all files of the current document. +Starts always in the master file. Stops when a match is found. +No active TAGS table is required. +@end deffn + +@deffn Command reftex-query-replace-document +Run a query-replace-regexp of @var{from} with @var{to} over the entire +document. With prefix arg, replace only word-delimited matches. No +active TAGS table is required. +@end deffn + +@deffn Command reftex-isearch-minor-mode +Toggle a minor mode which enables incremental search to work globally +on the entire multifile document. Files will be searched in th +sequence they appear in the document. +@end deffn + +@deffn Command reftex-goto-label +Prompt for a label (with completion) and jump to the location of this +label. Optional prefix argument @var{other-window} goes to the label in +another window. +@end deffn + + +@deffn Command reftex-change-label +Query replace @var{from} with @var{to} in all @code{\label} and +@code{\ref} commands. Works on the entire multifile document. No +active TAGS table is required. +@end deffn + +@deffn Command reftex-renumber-simple-labels +Renumber all simple labels in the document to make them sequentially. +Simple labels are the ones created by RefTeX, consisting only of the +prefix and a number. After the command completes, all these labels will +have sequential numbers throughout the document. Any references to the +labels will be changed as well. For this, @b{Ref@TeX{}} looks at the +arguments of any macros which either start or end with the string +@samp{ref}. This command should be used with care, in particular in +multifile documents. You should not use it if another document refers +to this one with the @code{xr} package. +@end deffn + +@deffn Command reftex-find-duplicate-labels +Produce a list of all duplicate labels in the document. +@end deffn + +@deffn Command reftex-create-bibtex-file +Create a new BibTeX database file with all entries referenced in document. +The command prompts for a filename and writes the collected entries to +that file. Only entries referenced in the current document with +any @code{\cite}-like macros are used. +The sequence in the new file is the same as it was in the old database. +@end deffn + +@deffn Command reftex-customize +Run the customize browser on the @b{Ref@TeX{}} group. +@end deffn +@deffn Command reftex-show-commentary +Show the commentary section from @file{reftex.el}. +@end deffn +@deffn Command reftex-info +Run info on the top @b{Ref@TeX{}} node. +@end deffn +@deffn Command reftex-parse-document +Parse the entire document in order to update the parsing information. +@end deffn +@deffn Command reftex-reset-mode +Enforce rebuilding of several internal lists and variables. Also +removes the parse file associated with the current document. +@end deffn + +@node Options, Keymaps and Hooks, Commands, Top +@chapter Options, Keymaps, Hooks +@cindex Options, list of + +Here is a complete list of @b{Ref@TeX{}}'s configuration variables. All +variables have customize support - so if you are not familiar with Emacs +Lisp (and even if you are) you might find it more comfortable to use +@code{customize} to look at and change these variables. @kbd{M-x +reftex-customize} will get you there. + +@menu +* Options (Table of Contents):: +* Options (Defining Label Environments):: +* Options (Creating Labels):: +* Options (Referencing Labels):: +* Options (Creating Citations):: +* Options (Index Support):: +* Options (Viewing Cross-References):: +* Options (Finding Files):: +* Options (Optimizations):: +* Options (Fontification):: +* Options (Misc):: +@end menu + +@node Options (Table of Contents), Options (Defining Label Environments), , Options +@section Table of Contents +@cindex Options, table of contents +@cindex Table of contents, options + +@defopt reftex-include-file-commands +List of LaTeX commands which input another file. +The file name is expected after the command, either in braces or separated +by whitespace. +@end defopt + +@defopt reftex-max-section-depth +Maximum depth of section levels in document structure. +Standard LaTeX needs 7, default is 12. +@end defopt + +@defopt reftex-section-levels +Commands and levels used for defining sections in the document. The +@code{car} of each cons cell is the name of the section macro. The +@code{cdr} is a number indicating its level. A negative level means the +same as the positive value, but the section will never get a number. +The @code{cdr} may also be a function which then has to return the +level. This list is also used for promotion and demotion of sectioning +commands. If you are using a document class which has several sets of +sectioning commands, promotion only works correctly if this list is +sorted first by set, then within each set by level. The promotion +commands always select the nearest entry with the correct new level. + +@end defopt + +@defopt reftex-toc-max-level +The maximum level of toc entries which will be included in the TOC. +Section headings with a bigger level will be ignored. In RefTeX, +chapters are level 1, sections level 2 etc. This variable can be +changed from within the @file{*toc*} buffer with the @kbd{t} key. +@end defopt + +@defopt reftex-part-resets-chapter +Non-@code{nil} means, @code{\part} is like any other sectioning command. +This means, part numbers will be included in the numbering of chapters, and +chapter counters will be reset for each part. +When @code{nil} (the default), parts are special, do not reset the +chapter counter and also do not show up in chapter numbers. +@end defopt + +@defopt reftex-auto-recenter-toc +Non-@code{nil} means, turn automatic recentering of @file{*TOC*} window on. +When active, the @file{*TOC*} window will always show the section you +are currently working in. Recentering happens whenever Emacs is idle for +more than @code{reftex-idle-time} seconds. + +Value @code{t} means, turn on immediately when RefTeX gets started. Then, +recentering will work for any toc window created during the session. + +Value @code{frame} (the default) means, turn automatic recentering on +only while the dedicated TOC frame does exist, and do the recentering +only in that frame. So when creating that frame (with @kbd{d} key in an +ordinary TOC window), the automatic recentering is turned on. When the +frame gets destroyed, automatic recentering is turned off again. + +This feature can be turned on and off from the menu +(Ref->Options). +@end defopt + +@defopt reftex-toc-split-windows-horizontally +Non-@code{nil} means, create TOC window by splitting window +horizontally. The default is to split vertically. +@end defopt + +@defopt reftex-toc-split-windows-fraction +Fraction of the width or height of the frame to be used for TOC window. +@end defopt + +@defopt reftex-toc-keep-other-windows +Non-@code{nil} means, split the selected window to display the +@file{*toc*} buffer. This helps to keep the window configuration, but +makes the @file{*toc*} small. When @code{nil}, all other windows except +the selected one will be deleted, so that the @file{*toc*} window fills +half the frame. +@end defopt + +@defopt reftex-toc-include-file-boundaries +Non-@code{nil} means, include file boundaries in @file{*toc*} buffer. +This flag can be toggled from within the @file{*toc*} buffer with the +@kbd{i} key. +@end defopt + +@defopt reftex-toc-include-labels +Non-@code{nil} means, include labels in @file{*toc*} buffer. This flag +can be toggled from within the @file{*toc*} buffer with the @kbd{l} +key. +@end defopt + +@defopt reftex-toc-include-index-entries +Non-@code{nil} means, include index entries in @file{*toc*} buffer. +This flag can be toggled from within the @file{*toc*} buffer with the +@kbd{i} key. +@end defopt + +@defopt reftex-toc-include-context +Non-@code{nil} means, include context with labels in the @file{*toc*} +buffer. Context will only be shown if the labels are visible as well. +This flag can be toggled from within the @file{*toc*} buffer with the +@kbd{c} key. +@end defopt + +@defopt reftex-toc-follow-mode +Non-@code{nil} means, point in @file{*toc*} buffer (the +table-of-contents buffer) will cause other window to follow. The other +window will show the corresponding part of the document. This flag can +be toggled from within the @file{*toc*} buffer with the @kbd{f} +key. +@end defopt + +@deffn {Normal Hook} reftex-toc-mode-hook +Normal hook which is run when a @file{*toc*} buffer is +created. +@end deffn + +@deffn Keymap reftex-toc-map +The keymap which is active in the @file{*toc*} buffer. +(@pxref{Table of Contents}). +@end deffn + +@node Options (Defining Label Environments), Options (Creating Labels), Options (Table of Contents), Options +@section Defining Label Environments +@cindex Options, defining label environments +@cindex Defining label environments, options + +@defopt reftex-default-label-alist-entries +Default label alist specifications. It is a list of symbols with +associations in the constant @code{reftex-label-alist-builtin}. +@code{LaTeX} should always be the last entry. +@end defopt + +@defopt reftex-label-alist +Set this variable to define additions and changes to the defaults in +@code{reftex-default-label-alist-entries}. The only things you +@emph{must not} change is that @code{?s} is the type indicator for +section labels, and @key{SPC} for the @code{any} label type. These are +hard-coded at other places in the code. + +The value of the variable must be a list of items. Each item is a list +itself and has the following structure: + +@example + (@var{env-or-macro} @var{type-key} @var{label-prefix} @var{reference-format} + @var{context-method} (@var{magic-word} ... ) @var{toc-level}) +@end example + +Each list entry describes either an environment carrying a counter for +use with @code{\label} and @code{\ref}, or a LaTeX macro defining a +label as (or inside) one of its arguments. The elements of each list +entry are: + +@table @asis +@item @var{env-or-macro} +Name of the environment (like @samp{table}) or macro (like +@samp{\myfig}). For macros, indicate the arguments, as in +@samp{\myfig[]@{@}@{@}@{*@}@{@}}. Use square brackets for optional +arguments, a star to mark the label argument, if any. The macro does +not have to have a label argument - you could also use +@samp{\label@{...@}} inside one of its arguments. + +Special names: @code{section} for section labels, @code{any} to define a +group which contains all labels. + +This may also be a function to do local parsing and identify point to be +in a non-standard label environment. The function must take an +argument @var{bound} and limit backward searches to this value. It +should return either nil or a cons cell @code{(@var{function} +. @var{position})} with the function symbol and the position where the +special environment starts. See the Info documentation for an +example. + +Finally this may also be @code{nil} if the entry is only meant to change +some settings associated with the type indicator character (see +below). + +@item @var{type-key} +Type indicator character, like @code{?t}, must be a printable ASCII +character. The type indicator is a single character which defines a +label type. Any label inside the environment or macro is assumed to +belong to this type. The same character may occur several times in this +list, to cover cases in which different environments carry the same +label type (like @code{equation} and @code{eqnarray}). If the type +indicator is @code{nil} and the macro has a label argument @samp{@{*@}}, +the macro defines neutral labels just like @code{\label}. In this case +the reminder of this entry is ignored. + +@item @var{label-prefix} +Label prefix string, like @samp{tab:}. The prefix is a short string +used as the start of a label. It may be the empty string. The prefix +may contain the following @samp{%} escapes: + +@example +%f Current file name, directory and extension stripped. +%F Current file name relative to master file directory. +%m Master file name, directory and extension stripped. +%M Directory name (without path) where master file is located. +%u User login name, on systems which support this. +%S A section prefix derived with variable @code{reftex-section-prefixes}. +@end example + +@noindent +Example: In a file @file{intro.tex}, @samp{eq:%f:} will become +@samp{eq:intro:}. + +@item @var{reference-format} +Format string for reference insert in buffer. @samp{%s} will be +replaced by the label. When the format starts with @samp{~}, this +@samp{~} will only be inserted when the character before point is +@emph{not} a whitespace. + +@item @var{context-method} +Indication on how to find the short context. +@itemize @minus +@item +If @code{nil}, use the text following the @samp{\label@{...@}} macro. +@item +If @code{t}, use +@itemize @minus +@item +the section heading for section labels. +@item +text following the @samp{\begin@{...@}} statement of environments (not +a good choice for environments like eqnarray or enumerate, where one has +several labels in a single environment). +@item +text after the macro name (starting with the first arg) for +macros. +@end itemize +@item +If an integer, use the nth argument of the macro. As a special case, +1000 means to get text after the last macro argument. +@item +If a string, use as regexp to search @emph{backward} from the label. +Context is then the text following the end of the match. E.g. putting +this to @samp{\\caption[[@{]} will use the caption in a figure or table +environment. @samp{\\begin@{eqnarray@}\|\\\\} works for +eqnarrays. +@item +If any of @code{caption}, @code{item}, @code{eqnarray-like}, +@code{alignat-like}, this symbol will internally be translated into an +appropriate regexp (see also the variable +@code{reftex-default-context-regexps}). +@item +If a function, call this function with the name of the environment/macro +as argument. On call, point will be just after the @code{\label} macro. +The function is expected to return a suitable context string. It should +throw an exception (error) when failing to find context. As an example, +here is a function returning the 10 chars following the label macro as +context: + +@example +(defun my-context-function (env-or-mac) + (if (> (point-max) (+ 10 (point))) + (buffer-substring (point) (+ 10 (point))) + (error "Buffer too small"))) +@end example +@end itemize + +Label context is used in two ways by @b{Ref@TeX{}}: For display in the label +menu, and to derive a label string. If you want to use a different +method for each of these, specify them as a dotted pair. +E.g. @code{(nil . t)} uses the text after the label (@code{nil}) for +display, and text from the default position (@code{t}) to derive a label +string. This is actually used for section labels. + +@item @var{magic-word-list} +List of magic words which identify a reference to be of this type. If +the word before point is equal to one of these words when calling +@code{reftex-reference}, the label list offered will be automatically +restricted to labels of the correct type. If the first element of this +word--list is the symbol `regexp', the strings are interpreted as regular +expressions. + +@item @var{toc-level} +The integer level at which this environment should be added to the table +of contents. See also @code{reftex-section-levels}. A positive value +will number the entries mixed with the sectioning commands of the same +level. A negative value will make unnumbered entries. Useful only for +theorem-like environments which structure the document. Will be ignored +for macros. When omitted or @code{nil}, no TOC entries will be +made. +@end table + +If the type indicator characters of two or more entries are the same, +@b{Ref@TeX{}} will use +@itemize @minus +@item +the first non-@code{nil} format and prefix +@item +the magic words of all involved entries. +@end itemize + +Any list entry may also be a symbol. If that has an association in +@code{reftex-label-alist-builtin}, the @code{cddr} of that association is +spliced into the list. However, builtin defaults should normally be set +with the variable @code{reftex-default-label-alist-entries}. +@end defopt + +@defopt reftex-section-prefixes +Prefixes for section labels. When the label prefix given in an entry in +@code{reftex-label-alist} contains @samp{%S}, this list is used to +determine the correct prefix string depending on the current section +level. The list is an alist, with each entry of the form +@w{@code{(@var{key} . @var{prefix})}}. Possible keys are sectioning macro +names like @samp{chapter}, integer section levels (as given in +@code{reftex-section-levels}), and @code{t} for the default. +@end defopt + +@defopt reftex-default-context-regexps +Alist with default regular expressions for finding context. The emacs +lisp form @w{@code{(format regexp (regexp-quote environment))}} is used +to calculate the final regular expression - so @samp{%s} will be +replaced with the environment or macro. +@end defopt + +@defopt reftex-trust-label-prefix +Non-@code{nil} means, trust the label prefix when determining label type. +It is customary to use special label prefixes to distinguish different label +types. The label prefixes have no syntactic meaning in LaTeX (unless +special packages like fancyref) are being used. RefTeX can and by +default does parse around each label to detect the correct label type, +but this process can be slow when a document contains thousands of +labels. If you use label prefixes consistently, you may speed up +document parsing by setting this variable to a non-nil value. RefTeX +will then compare the label prefix with the prefixes found in +`reftex-label-alist' and derive the correct label type in this way. +Possible values for this option are: + +@example +t @r{This means to trust any label prefixes found.} +regexp @r{If a regexp, only prefixes matched by the regexp are trusted.} +list @r{List of accepted prefixes, as strings. The colon is part of} + @r{the prefix, e.g. ("fn:" "eqn:" "item:").} +nil @r{Never trust a label prefix.} +@end example +The only disadvantage of using this feature is that the label context +displayed in the label selection buffer along with each label is +simply some text after the label definition. This is no problem if you +place labels keeping this in mind (e.g. @i{before} the equation, @i{at +the beginning} of a fig/tab caption ...). Anyway, it is probably best +to use the regexp or the list value types to fine-tune this feature. +For example, if your document contains thousands of footnotes with +labels fn:xxx, you may want to set this variable to the value "^fn:$" or +("fn:"). Then RefTeX will still do extensive parsing for any +non-footnote labels. +@end defopt + +@node Options (Creating Labels), Options (Referencing Labels), Options (Defining Label Environments), Options +@section Creating Labels +@cindex Options, creating labels +@cindex Creating labels, options + +@defopt reftex-insert-label-flags +Flags governing label insertion. The value has the form + +@example +(@var{derive} @var{prompt}) +@end example + +If @var{derive}is @code{t}, @b{Ref@TeX{}} will try to derive a sensible +label from context. A section label for example will be derived from +the section heading. The conversion of the context to a valid label is +governed by the specifications given in +@code{reftex-derive-label-parameters}. If @var{derive} is @code{nil}, +the default label will consist of the prefix and a unique number, like +@samp{eq:23}. + +If @var{prompt} is @code{t}, the user will be prompted for a label +string. When @var{prompt} is @code{nil}, the default label will be +inserted without query. + +So the combination of @var{derive} and @var{prompt} controls label +insertion. Here is a table describing all four possibilities: + +@example +@group +@var{derive} @var{prompt} @var{action} +----------------------------------------------------------- +nil nil @r{Insert simple label, like @samp{eq:22} or @samp{sec:13}. No query.} +nil t @r{Prompt for label.} +t nil @r{Derive a label from context and insert. No query.} +t t @r{Derive a label from context, prompt for confirmation.} +@end group +@end example + +Each flag may be set to @code{t}, @code{nil}, or a string of label type +letters indicating the label types for which it should be true. Thus, +the combination may be set differently for each label type. The default +settings @samp{"s"} and @samp{"sft"} mean: Derive section labels from +headings (with confirmation). Prompt for figure and table labels. Use +simple labels without confirmation for everything else. + +The available label types are: @code{s} (section), @code{f} (figure), +@code{t} (table), @code{i} (item), @code{e} (equation), @code{n} +(footnote), @code{N} (endnote) plus any definitions in +@code{reftex-label-alist}. +@end defopt + +@deffn Hook reftex-format-label-function +If non-@code{nil}, should be a function which produces the string to +insert as a label definition. The function will be called with two +arguments, the @var{label} and the @var{default-format} (usually +@samp{\label@{%s@}}). It should return the string to insert into the +buffer. +@end deffn + +@deffn Hook reftex-string-to-label-function +Function to turn an arbitrary string into a valid label. +@b{Ref@TeX{}}'s default function uses the variable +@code{reftex-derive-label-parameters}. +@end deffn + +@deffn Hook reftex-translate-to-ascii-function +Filter function which will process a context string before it is used to +derive a label from it. The intended application is to convert ISO or +Mule characters into something valid in labels. The default function +@code{reftex-latin1-to-ascii} removes the accents from Latin-1 +characters. X-Symbol (>=2.6) sets this variable to the much more +general @code{x-symbol-translate-to-ascii}. +@end deffn + +@defopt reftex-derive-label-parameters +Parameters for converting a string into a label. This variable is a +list of the following items: +@table @asis +@item @var{nwords} +Number of words to use. +@item @var{maxchar} +Maximum number of characters in a label string. +@item @var{invalid} +@code{nil}: Throw away any words containing characters invalid in labels.@* +@code{t}: Throw away only the invalid characters, not the whole word. +@item @var{abbrev} +@code{nil}: Never abbreviate words.@* +@code{t}: Always abbreviate words (see @code{reftex-abbrev-parameters}).@* +@code{1}: Abbreviate words if necessary to shorten label string. +@item @var{separator} +String separating different words in the label. +@item @var{ignorewords} +List of words which should not be part of labels. +@item @var{downcase} +@code{t}: Downcase words before putting them into the label.@* +@end table +@end defopt + +@defopt reftex-label-illegal-re +Regexp matching characters not valid in labels. +@end defopt + +@defopt reftex-abbrev-parameters +Parameters for abbreviation of words. A list of four parameters. +@table @asis +@item @var{min-chars} +Minimum number of characters remaining after abbreviation. +@item @var{min-kill} +Minimum number of characters to remove when abbreviating words. +@item @var{before} +Character class before abbrev point in word. +@item @var{after} +Character class after abbrev point in word. +@end table +@end defopt + +@node Options (Referencing Labels), Options (Creating Citations), Options (Creating Labels), Options +@section Referencing Labels +@cindex Options, referencing labels +@cindex Referencing labels, options + +@defopt reftex-label-menu-flags +List of flags governing the label menu makeup. The flags are: +@table @asis +@item @var{table-of-contents} +Show the labels embedded in a table of context. +@item @var{section-numbers} +Include section numbers (like 4.1.3) in table of contents. +@item @var{counters} +Show counters. This just numbers the labels in the menu. +@item @var{no-context} +Non-@code{nil} means do @emph{not} show the short context. +@item @var{follow} +Follow full context in other window. +@item @var{show-commented} +Show labels from regions which are commented out. +@item @var{match-everywhere} +Obsolete flag. +@item @var{show-files} +Show begin and end of included files. +@end table + +Each of these flags can be set to @code{t} or @code{nil}, or to a string +of type letters indicating the label types for which it should be true. +These strings work like character classes in regular expressions. Thus, +setting one of the flags to @samp{"sf"} makes the flag true for section +and figure labels, @code{nil} for everything else. Setting it to +@samp{"^sf"} makes it the other way round. + +The available label types are: @code{s} (section), @code{f} (figure), +@code{t} (table), @code{i} (item), @code{e} (equation), @code{n} +(footnote), plus any definitions in @code{reftex-label-alist}. + +Most options can also be switched from the label menu itself - so if you +decide here to not have a table of contents in the label menu, you can +still get one interactively during selection from the label menu. +@end defopt + +@defopt reftex-multiref-punctuation +Punctuation strings for multiple references. When marking is used in +the selection buffer to select several references, this variable +associates the 3 marking characters @samp{,-+} with prefix strings to be +inserted into the buffer before the corresponding @code{\ref} macro. +This is used to string together whole reference sets, like +@samp{eqs. 1,2,3-5,6 and 7} in a single call to +@code{reftex-reference}. +@end defopt + +@defopt reftex-vref-is-default +Non-@code{nil} means, the varioref macro @code{\vref} is used as +default. In the selection buffer, the @kbd{v} key toggles the reference +macro between @code{\ref} and @code{\vref}. The value of this variable +determines the default which is active when entering the selection +process. Instead of @code{nil} or @code{t}, this may also be a string +of type letters indicating the label types for which it should be +true. +@end defopt + +@defopt reftex-fref-is-default +Non-@code{nil} means, the fancyref macro @code{\fref} is used as +default. In the selection buffer, the @kbd{V} key toggles the reference +macro between @code{\ref}, @code{\fref} and @code{\Fref}. The value of +this variable determines the default which is active when entering the +selection process. Instead of @code{nil} or @code{t}, this may also be +a string of type letters indicating the label types for which it should +be true. +@end defopt + +@deffn Hook reftex-format-ref-function +If non-@code{nil}, should be a function which produces the string to +insert as a reference. Note that the insertion format can also be +changed with @code{reftex-label-alist}. This hook also is used by the +special commands to insert @code{\vref} and @code{\fref} references, so +even if you set this, your setting will be ignored by the special +commands. The function will be called with two arguments, the +@var{label} and the @var{default-format} (usually @samp{~\ref@{%s@}}). +It should return the string to insert into the buffer. +@end deffn + +@defopt reftex-level-indent +Number of spaces to be used for indentation per section level. +@end defopt + +@defopt reftex-guess-label-type +Non-@code{nil} means, @code{reftex-reference} will try to guess the +label type. To do that, @b{Ref@TeX{}} will look at the word before the +cursor and compare it with the magic words given in +@code{reftex-label-alist}. When it finds a match, @b{Ref@TeX{}} will +immediately offer the correct label menu - otherwise it will prompt you +for a label type. If you set this variable to @code{nil}, @b{Ref@TeX{}} +will always prompt for a label type. +@end defopt + +@deffn {Normal Hook} reftex-display-copied-context-hook +Normal Hook which is run before context is displayed anywhere. Designed +for @w{@code{X-Symbol}}, but may have other uses as well. +@end deffn + +@deffn Hook reftex-pre-refontification-functions +@code{X-Symbol} specific hook. Probably not useful for other purposes. +The functions get two arguments, the buffer from where the command +started and a symbol indicating in what context the hook is +called. +@end deffn + +@deffn {Normal Hook} reftex-select-label-mode-hook +Normal hook which is run when a selection buffer enters +@code{reftex-select-label-mode}. +@end deffn + +@deffn Keymap reftex-select-label-map +The keymap which is active in the labels selection process +(@pxref{Referencing Labels}). +@end deffn + +@node Options (Creating Citations), Options (Index Support), Options (Referencing Labels), Options +@section Creating Citations +@cindex Options, creating citations +@cindex Creating citations, options + +@defopt reftex-bibliography-commands +LaTeX commands which specify the BibTeX databases to use with the document. +@end defopt + +@defopt reftex-bibfile-ignore-regexps +List of regular expressions to exclude files in +@code{\\bibliography@{..@}}. File names matched by any of these regexps +will not be parsed. Intended for files which contain only +@code{@@string} macro definitions and the like, which are ignored by +@b{Ref@TeX{}} anyway. +@end defopt + +@defopt reftex-default-bibliography +List of BibTeX database files which should be used if none are specified. +When @code{reftex-citation} is called from a document with neither +a @samp{\bibliography@{...@}} statement nor a @code{thebibliography} +environment, @b{Ref@TeX{}} will scan these files instead. Intended for +using @code{reftex-citation} in non-LaTeX files. The files will be +searched along the BIBINPUTS or TEXBIB path. +@end defopt + +@defopt reftex-sort-bibtex-matches +Sorting of the entries found in BibTeX databases by reftex-citation. +Possible values: +@example +nil @r{Do not sort entries.} +author @r{Sort entries by author name.} +year @r{Sort entries by increasing year.} +reverse-year @r{Sort entries by decreasing year.} +@end example +@end defopt + +@defopt reftex-cite-format +The format of citations to be inserted into the buffer. It can be a +string, an alist or a symbol. In the simplest case this is just the string +@samp{\cite@{%l@}}, which is also the default. See the definition of +@code{reftex-cite-format-builtin} for more complex examples. + +If @code{reftex-cite-format} is a string, it will be used as the format. +In the format, the following percent escapes will be expanded. + +@table @code +@item %l +The BibTeX label of the citation. +@item %a +List of author names, see also @code{reftex-cite-punctuation}. +@item %2a +Like %a, but abbreviate more than 2 authors like Jones et al. +@item %A +First author name only. +@item %e +Works like @samp{%a}, but on list of editor names. (@samp{%2e} and +@samp{%E} work a well). +@end table + +It is also possible to access all other BibTeX database fields: + +@example +%b booktitle %c chapter %d edition %h howpublished +%i institution %j journal %k key %m month +%n number %o organization %p pages %P first page +%r address %s school %u publisher %t title +%v volume %y year +%B booktitle, abbreviated %T title, abbreviated +@end example + +@noindent +Usually, only @samp{%l} is needed. The other stuff is mainly for the +echo area display, and for @code{(setq reftex-comment-citations t)}. + +@samp{%<} as a special operator kills punctuation and space around it +after the string has been formatted. + +A pair of square brackets indicates an optional argument, and RefTeX +will prompt for the values of these arguments. + +Beware that all this only works with BibTeX database files. When +citations are made from the @code{\bibitems} in an explicit +@code{thebibliography} environment, only @samp{%l} is available. + +If @code{reftex-cite-format} is an alist of characters and strings, the +user will be prompted for a character to select one of the possible +format strings. + +In order to configure this variable, you can either set +@code{reftex-cite-format} directly yourself or set it to the +@emph{symbol} of one of the predefined styles. The predefined symbols +are those which have an association in the constant +@code{reftex-cite-format-builtin}) E.g.: @code{(setq reftex-cite-format +'natbib)}. +@end defopt + +@deffn Hook reftex-format-cite-function +If non-@code{nil}, should be a function which produces the string to +insert as a citation. Note that the citation format can also be changed +with the variable @code{reftex-cite-format}. The function will be +called with two arguments, the @var{citation-key} and the +@var{default-format} (taken from @code{reftex-cite-format}). It should +return the string to insert into the buffer. +@end deffn + +@defopt reftex-cite-prompt-optional-args +Non-@code{nil} means, prompt for empty optional arguments in cite macros. +When an entry in @code{reftex-cite-format} ist given with square brackets to +indicate optional arguments (for example @samp{\\cite[][]@{%l@}}), RefTeX can +prompt for values. Possible values are: +@example +nil @r{Never prompt for optional arguments} +t @r{Always prompt} +maybe @r{Prompt only if @code{reftex-citation} was called with C-u prefix arg}@end example +Unnecessary empty optional arguments are removed before insertion into +the buffer. See @code{reftex-cite-cleanup-optional-args}. +@end defopt + +@defopt reftex-cite-cleanup-optional-args +Non-@code{nil} means, remove empty optional arguments from cite macros +if possible. +@end defopt + +@defopt reftex-comment-citations +Non-@code{nil} means add a comment for each citation describing the full +entry. The comment is formatted according to +@code{reftex-cite-comment-format}. +@end defopt + +@defopt reftex-cite-comment-format +Citation format used for commented citations. Must @emph{not} contain +@samp{%l}. See the variable @code{reftex-cite-format} for possible +percent escapes. +@end defopt + +@defopt reftex-cite-punctuation +Punctuation for formatting of name lists in citations. This is a list +of 3 strings. +@enumerate +@item +normal names separator, like @samp{, } in Jones, Brown and Miller +@item +final names separator, like @samp{ and } in Jones, Brown and Miller +@item +The @samp{et al.} string, like @samp{ @{\it et al.@}} in +Jones @{\it et al.@} +@end enumerate +@end defopt + +@deffn {Normal Hook} reftex-select-bib-mode-hook +Normal hook which is run when a selection buffer enters +@code{reftex-select-bib-mode}. +@end deffn + +@deffn Keymap reftex-select-bib-map +The keymap which is active in the citation-key selection process +(@pxref{Creating Citations}). +@end deffn + +@node Options (Index Support), Options (Viewing Cross-References), Options (Creating Citations), Options +@section Index Support +@cindex Options, Index support +@cindex Index support, options + +@defopt reftex-support-index +Non-@code{nil} means, index entries are parsed as well. Index support +is resource intensive and the internal structure holding the parsed +information can become quite big. Therefore it can be turned off. When +this is @code{nil} and you execute a command which requires index +support, you will be asked for confirmation to turn it on and rescan the +document. +@end defopt + +@defopt reftex-index-special-chars +List of special characters in index entries, given as strings. These +correspond to the @code{MakeIndex} keywords +@code{(@var{level} @var{encap} @var{actual} @var{quote} @var{escape})}. +@end defopt + +@defopt reftex-index-macros +List of macros which define index entries. The structure of each entry +is +@lisp +(@var{macro} @var{index-tag} @var{key} @var{prefix} @var{exclude} @var{repeat}) +@end lisp + +@var{macro} is the macro. Arguments should be denoted by empty braces, +as for example in @samp{\index[]@{*@}}. Use square brackets to denote +optional arguments. The star marks where the index key is. + +@var{index-tag} is a short name of the index. @samp{idx} and @samp{glo} +are reserved for the default index and the glossary. Other indices can +be defined as well. If this is an integer, the Nth argument of the +macro holds the index tag. + +@var{key} is a character which is used to identify the macro for input +with @code{reftex-index}. @samp{?i}, @samp{?I}, and @samp{?g} are +reserved for default index and glossary. + +@var{prefix} can be a prefix which is added to the @var{key} part of the +index entry. If you have a macro +@code{\newcommand@{\molec@}[1]@{#1\index@{Molecules!#1@}}, this prefix +should be @samp{Molecules!}. + +@var{exclude} can be a function. If this function exists and returns a +non-@code{nil} value, the index entry at point is ignored. This was +implemented to support the (deprecated) @samp{^} and @samp{_} shortcuts +in the LaTeX2e @code{index} package. + +@var{repeat}, if non-@code{nil}, means the index macro does not typeset +the entry in the text, so that the text has to be repeated outside the +index macro. Needed for @code{reftex-index-selection-or-word} and for +indexing from the phrase buffer. + +The final entry may also be a symbol. It must have an association in +the variable @code{reftex-index-macros-builtin} to specify the main +indexing package you are using. Valid values are currently +@example +default @r{The LaTeX default - unnecessary to specify this one} +multind @r{The multind.sty package} +index @r{The index.sty package} +index-shortcut @r{The index.sty packages with the ^ and _ shortcuts.} + @r{Should not be used - only for old documents} +@end example +Note that AUCTeX sets these things internally for @b{Ref@TeX{}} as well, +so with a sufficiently new version of AUCTeX, you should not set the +package here. +@end defopt + +@defopt reftex-index-default-macro +The default index macro for @code{reftex-index-selection-or-word}. +This is a list with @code{(@var{macro-key} @var{default-tag})}. + +@var{macro-key} is a character identifying an index macro - see +@code{reftex-index-macros}. + +@var{default-tag} is the tag to be used if the macro requires a +@var{tag} argument. When this is @code{nil} and a @var{tag} is needed, +@b{Ref@TeX{}} will ask for it. When this is the empty string and the +TAG argument of the index macro is optional, the TAG argument will be +omitted. +@end defopt + +@defopt reftex-index-default-tag +Default index tag. When working with multiple indexes, RefTeX queries +for an index tag when creating index entries or displaying a specific +index. This variable controls the default offered for these queries. +The default can be selected with @key{RET} during selection or +completion. Valid values of this variable are: +@example +nil @r{Do not provide a default index} +"tag" @r{The default index tag given as a string, e.g. "idx"} +last @r{The last used index tag will be offered as default} +@end example +@end defopt + +@defopt reftex-index-math-format +Format of index entries when copied from inside math mode. When +@code{reftex-index-selection-or-word} is executed inside TeX math mode, +the index key copied from the buffer is processed with this format +string through the @code{format} function. This can be used to add the +math delimiters (e.g. @samp{$}) to the string. Requires the +@file{texmathp.el} library which is part of AUCTeX. +@end defopt + +@defopt reftex-index-phrase-file-extension +File extension for the index phrase file. This extension will be added +to the base name of the master file. +@end defopt + +@defopt reftex-index-phrases-logical-and-regexp +Regexp matching the @samp{and} operator for index arguments in phrases +file. When several index arguments in a phrase line are separated by +this operator, each part will generate an index macro. So each match of +the search phrase will produce @emph{several} different index entries. +Make sure this does no match things which are not separators. This +logical @samp{and} has higher priority than the logical @samp{or} +specified in @code{reftex-index-phrases-logical-or-regexp}. +@end defopt + +@defopt reftex-index-phrases-logical-or-regexp +Regexp matching the @samp{or} operator for index arguments in phrases +file. When several index arguments in a phrase line are separated by +this operator, the user will be asked to select one of them at each +match of the search phrase. The first index arg will be the default. A +number key @kbd{1}--@kbd{9} must be pressed to switch to another. Make +sure this does no match things which are not separators. The logical +@samp{and} specified in @code{reftex-index-phrases-logical-or-regexp} +has higher priority than this logical @samp{or}. +@end defopt + +@defopt reftex-index-phrases-search-whole-words +Non-@code{nil} means phrases search will look for whole words, not subwords. +This works by requiring word boundaries at the beginning and end of +the search string. When the search phrase already has a non-word-char +at one of these points, no word boundary is required there. +@end defopt + +@defopt reftex-index-phrases-case-fold-search +Non-@code{nil} means, searching for index phrases will ignore +case. +@end defopt + +@defopt reftex-index-verify-function +A function which is called at each match during global indexing. +If the function returns nil, the current match is skipped. +@end defopt + +@defopt reftex-index-phrases-skip-indexed-matches +Non-@code{nil} means, skip matches which appear to be indexed already. +When doing global indexing from the phrases buffer, searches for some +phrases may match at places where that phrase was already indexed. In +particular when indexing an already processed document again, this +will even be the norm. When this variable is non-@code{nil}, +@b{Ref@TeX{}} checks if the match is an index macro argument, or if an +index macro is directly before or after the phrase. If that is the +case, that match will be ignored. +@end defopt + +@defopt reftex-index-phrases-wrap-long-lines +Non-@code{nil} means, when indexing from the phrases buffer, wrap lines. +Inserting indexing commands in a line makes the line longer - often +so long that it does not fit onto the screen. When this variable is +non-@code{nil}, newlines will be added as necessary before and/or after the +indexing command to keep lines short. However, the matched text +phrase and its index command will always end up on a single line. +@end defopt + +@defopt reftex-index-phrases-sort-prefers-entry +Non-@code{nil} means when sorting phrase lines, the explicit index entry +is used. Phrase lines in the phrases buffer contain a search phrase, and +sorting is normally based on these. Some phrase lines also have +an explicit index argument specified. When this variable is +non-@code{nil}, the index argument will be used for sorting. +@end defopt + +@defopt reftex-index-phrases-sort-in-blocks +Non-@code{nil} means, empty and comment lines separate phrase buffer +into blocks. Sorting will then preserve blocks, so that lines are +re-arranged only within blocks. +@end defopt + +@defopt reftex-index-phrases-map +Keymap for the Index Phrases buffer. +@end defopt + +@defopt reftex-index-phrases-mode-hook +Normal hook which is run when a buffer is put into +@code{reftex-index-phrases-mode}. +@end defopt + +@defopt reftex-index-section-letters +The letters which denote sections in the index. Usually these are all +capital letters. Don't use any downcase letters. Order is not +significant, the index will be sorted by whatever the sort function +thinks is correct. In addition to these letters, @b{Ref@TeX{}} will +create a group @samp{!} which contains all entries sorted below the +lowest specified letter. In the @file{*Index*} buffer, pressing any of +these capital letters or @kbd{!} will jump to that section. +@end defopt + +@defopt reftex-index-include-context +Non-@code{nil} means, display the index definition context in the +@file{*Index*} buffer. This flag may also be toggled from the +@file{*Index*} buffer with the @kbd{c} key. +@end defopt + +@defopt reftex-index-follow-mode +Non-@code{nil} means, point in @file{*Index*} buffer will cause other +window to follow. The other window will show the corresponding part of +the document. This flag can be toggled from within the @file{*Index*} +buffer with the @kbd{f} key. +@end defopt + +@deffn Keymap reftex-index-map +The keymap which is active in the @file{*Index*} buffer +(@pxref{Index Support}). +@end deffn + +@node Options (Viewing Cross-References), Options (Finding Files), Options (Index Support), Options +@section Viewing Cross-References +@cindex Options, viewing cross-references +@cindex Viewing cross-references, options + +@defopt reftex-view-crossref-extra +Macros which can be used for the display of cross references. +This is used when `reftex-view-crossref' is called with point in an +argument of a macro. Note that crossref viewing for citations, +references (both ways) and index entries is hard-coded. This variable +is only to configure additional structures for which crossreference +viewing can be useful. Each entry has the structure +@example +(@var{macro-re} @var{search-re} @var{highlight}). +@end example +@var{macro-re} is matched against the macro. @var{search-re} is the +regexp used to search for cross references. @samp{%s} in this regexp is +replaced with the macro argument at point. @var{highlight} is an +integer indicating which subgroup of the match should be highlighted. +@end defopt + +@defopt reftex-auto-view-crossref +Non-@code{nil} means, initially turn automatic viewing of crossref info +on. Automatic viewing of crossref info normally uses the echo area. +Whenever point is idle for more than @code{reftex-idle-time} seconds on +the argument of a @code{\ref} or @code{\cite} macro, and no other +message is being displayed, the echo area will display information about +that cross reference. You can also set the variable to the symbol +@code{window}. In this case a small temporary window is used for the +display. This feature can be turned on and off from the menu +(Ref->Options). +@end defopt + +@defopt reftex-idle-time +Time (secs) Emacs has to be idle before automatic crossref display +or toc recentering is done. +@end defopt + +@defopt reftex-cite-view-format +Citation format used to display citation info in the message area. See +the variable @code{reftex-cite-format} for possible percent +escapes. +@end defopt + +@defopt reftex-revisit-to-echo +Non-@code{nil} means, automatic citation display will revisit files if +necessary. When nil, citation display in echo area will only be active +for cached echo strings (see @code{reftex-cache-cite-echo}), or for +BibTeX database files which are already visited by a live associated +buffers. +@end defopt + +@defopt reftex-cache-cite-echo +Non-@code{nil} means, the information displayed in the echo area for +cite macros (see variable @code{reftex-auto-view-crossref}) is cached and +saved along with the parsing information. The cache survives document +scans. In order to clear it, use @kbd{M-x reftex-reset-mode}. +@end defopt + +@node Options (Finding Files), Options (Optimizations), Options (Viewing Cross-References), Options +@section Finding Files +@cindex Options, Finding Files +@cindex Finding files, options + +@defopt reftex-texpath-environment-variables +List of specifications how to retrieve the search path for TeX files. +Several entries are possible. +@itemize @minus +@item +If an element is the name of an environment variable, its content is +used. +@item +If an element starts with an exclamation mark, it is used as a command +to retrieve the path. A typical command with the kpathsearch library +would be @w{@code{"!kpsewhich -show-path=.tex"}}. +@item +Otherwise the element itself is interpreted as a path. +@end itemize +Multiple directories can be separated by the system dependent +@code{path-separator}. Directories ending in @samp{//} or @samp{!!} will +be expanded recursively. See also @code{reftex-use-external-file-finders}. +@end defopt + +@defopt reftex-bibpath-environment-variables +List of specifications how to retrieve the search path for BibTeX +files. Several entries are possible. +@itemize @minus +@item +If an element is the name of an environment variable, its content is +used. +@item +If an element starts with an exclamation mark, it is used as a command +to retrieve the path. A typical command with the kpathsearch library +would be @w{@code{"!kpsewhich -show-path=.bib"}}. +@item +Otherwise the element itself is interpreted as a path. +@end itemize +Multiple directories can be separated by the system dependent +@code{path-separator}. Directories ending in @samp{//} or @samp{!!} will +be expanded recursively. See also @code{reftex-use-external-file-finders}. +@end defopt + +@defopt reftex-file-extensions +Association list with file extensions for different file types. +This is a list of items, each item is like: +@code{(@var{type} . (@var{def-ext} @var{other-ext} ...))} +@example +@var{type}: @r{File type like @code{"bib"} or @code{"tex"}.} +@var{def-ext}: @r{The default extension for that file type, like @code{".tex"} or @code{".bib"}.} +@var{other-ext}: @r{Any number of other valid extensions for this file type.} +@end example +When a files is searched and it does not have any of the valid extensions, +we try the default extension first, and then the naked file name. +@end defopt + +@defopt reftex-search-unrecursed-path-first +Non-@code{nil} means, search all specified directories before trying +recursion. Thus, in a path @samp{.//:/tex/}, search first @samp{./}, +then @samp{/tex/}, and then all subdirectories of @samp{./}. If this +option is @code{nil}, the subdirectories of @samp{./} are searched +before @samp{/tex/}. This is mainly for speed - most of the time the +recursive path is for the system files and not for the user files. Set +this to @code{nil} if the default makes @b{Ref@TeX{}} finding files with +equal names in wrong sequence. +@end defopt + +@defopt reftex-use-external-file-finders +Non-@code{nil} means, use external programs to find files. Normally, +@b{Ref@TeX{}} searches the paths given in the environment variables +@code{TEXINPUTS} and @code{BIBINPUTS} to find TeX files and BibTeX +database files. With this option turned on, it calls an external +program specified in the option @code{reftex-external-file-finders} +instead. As a side effect, the variables +@code{reftex-texpath-environment-variables} and +@code{reftex-bibpath-environment-variables} will be ignored. +@end defopt + +@defopt reftex-external-file-finders +Association list with external programs to call for finding files. Each +entry is a cons cell @w{@code{(@var{type} . @var{program})}}. +@var{type} is either @code{"tex"} or @code{"bib"}. @var{program} is a +string containing the external program to use with any arguments. +@code{%f} will be replaced by the name of the file to be found. Note +that these commands will be executed directly, not via a shell. Only +relevant when @code{reftex-use-external-file-finders} is +non-@code{nil}. +@end defopt + +@page +@node Options (Optimizations), Options (Fontification), Options (Finding Files), Options +@section Optimizations +@cindex Options, optimizations +@cindex Optimizations, options + +@defopt reftex-keep-temporary-buffers +Non-@code{nil} means, keep buffers created for parsing and lookup. +@b{Ref@TeX{}} sometimes needs to visit files related to the current +document. We distinguish files visited for +@table @asis +@item PARSING +Parts of a multifile document loaded when (re)-parsing the +document. +@item LOOKUP +BibTeX database files and TeX files loaded to find a reference, to +display label context, etc. +@end table +The created buffers can be kept for later use, or be thrown away +immediately after use, depending on the value of this variable: + +@table @code +@item nil +Throw away as much as possible. +@item t +Keep everything. +@item 1 +Throw away buffers created for parsing, but keep the ones created for +lookup. +@end table + +If a buffer is to be kept, the file is visited normally (which is +potentially slow but will happen only once). If a buffer is to be thrown +away, the initialization of the buffer depends upon the variable +@code{reftex-initialize-temporary-buffers}. +@end defopt + +@defopt reftex-initialize-temporary-buffers +Non-@code{nil} means do initializations even when visiting file +temporarily. When @code{nil}, @b{Ref@TeX{}} may turn off find-file hooks and +other stuff to briefly visit a file. When @code{t}, the full default +initializations are done (@code{find-file-hook} etc.). Instead of +@code{t} or @code{nil}, this variable may also be a list of hook +functions to do a minimal initialization. +@end defopt + +@defopt reftex-no-include-regexps +List of regular expressions to exclude certain input files from parsing. +If the name of a file included via @code{\include} or @code{\input} is +matched by any of the regular expressions in this list, that file is not +parsed by @b{Ref@TeX{}}. +@end defopt + +@defopt reftex-enable-partial-scans +Non-@code{nil} means, re-parse only 1 file when asked to re-parse. +Re-parsing is normally requested with a @kbd{C-u} prefix to many @b{Ref@TeX{}} +commands, or with the @kbd{r} key in menus. When this option is +@code{t} in a multifile document, we will only parse the current buffer, +or the file associated with the label or section heading near point in a +menu. Requesting re-parsing of an entire multifile document then +requires a @kbd{C-u C-u} prefix or the capital @kbd{R} key in +menus. +@end defopt + +@defopt reftex-save-parse-info +Non-@code{nil} means, save information gathered with parsing in files. +The file @file{MASTER.rel} in the same directory as @file{MASTER.tex} is +used to save the information. When this variable is @code{t}, +@itemize @minus +@item +accessing the parsing information for the first time in an editing +session will read that file (if available) instead of parsing the +document. +@item +exiting Emacs or killing a buffer in reftex-mode will cause a new +version of the file to be written. +@end itemize +@end defopt + +@defopt reftex-parse-file-extension +File extension for the file in which parser information is stored. +This extension is added to the base name of the master file. +@end defopt + +@defopt reftex-allow-automatic-rescan +Non-@code{nil} means, @b{Ref@TeX{}} may rescan the document when this seems +necessary. Applies (currently) only in rare cases, when a new label +cannot be placed with certainty into the internal label list. +@end defopt + +@defopt reftex-use-multiple-selection-buffers +Non-@code{nil} means use a separate selection buffer for each label +type. These buffers are kept from one selection to the next and need +not to be created for each use - so the menu generally comes up faster. +The selection buffers will be erased (and therefore updated) +automatically when new labels in its category are added. See the +variable @code{reftex-auto-update-selection-buffers}. +@end defopt + +@defopt reftex-auto-update-selection-buffers +Non-@code{nil} means, selection buffers will be updated automatically. +When a new label is defined with @code{reftex-label}, all selection +buffers associated with that label category are emptied, in order to +force an update upon next use. When @code{nil}, the buffers are left +alone and have to be updated by hand, with the @kbd{g} key from the +label selection process. The value of this variable will only have any +effect when @code{reftex-use-multiple-selection-buffers} is +non-@code{nil}. +@end defopt + +@node Options (Fontification), Options (Misc), Options (Optimizations), Options +@section Fontification +@cindex Options, fontification +@cindex Fontification, options + +@defopt reftex-use-fonts +Non-@code{nil} means, use fonts in label menu and on-the-fly help. +Font-lock must be loaded as well to actually get fontified +display. After changing this option, a rescan may be necessary to +activate it. +@end defopt + +@defopt reftex-refontify-context +Non-@code{nil} means, re-fontify the context in the label menu with +font-lock. This slightly slows down the creation of the label menu. It +is only necessary when you definitely want the context fontified. + +This option may have 3 different values: +@table @code +@item nil +Never refontify. +@item t +Always refontify. +@item 1 +Refontify when necessary, e.g. with old versions of the x-symbol +package. +@end table +The option is ignored when @code{reftex-use-fonts} is @code{nil}. +@end defopt + +@defopt reftex-highlight-selection +Non-@code{nil} means, highlight selected text in selection and +@file{*toc*} buffers. Normally, the text near the cursor is the +@emph{selected} text, and it is highlighted. This is the entry most +keys in the selection and @file{*toc*} buffers act on. However, if you +mainly use the mouse to select an item, you may find it nice to have +mouse-triggered highlighting @emph{instead} or @emph{as well}. The +variable may have one of these values: + +@example +nil @r{No highlighting.} +cursor @r{Highlighting is cursor driven.} +mouse @r{Highlighting is mouse driven.} +both @r{Both cursor and mouse trigger highlighting.} +@end example + +Changing this variable requires to rebuild the selection and *toc* +buffers to become effective (keys @kbd{g} or @kbd{r}). +@end defopt + +@defopt reftex-cursor-selected-face +Face name to highlight cursor selected item in toc and selection buffers. +See also the variable @code{reftex-highlight-selection}. +@end defopt +@defopt reftex-mouse-selected-face +Face name to highlight mouse selected item in toc and selection buffers. +See also the variable @code{reftex-highlight-selection}. +@end defopt +@defopt reftex-file-boundary-face +Face name for file boundaries in selection buffer. +@end defopt +@defopt reftex-label-face +Face name for labels in selection buffer. +@end defopt +@defopt reftex-section-heading-face +Face name for section headings in toc and selection buffers. +@end defopt +@defopt reftex-toc-header-face +Face name for the header of a toc buffer. +@end defopt +@defopt reftex-bib-author-face +Face name for author names in bib selection buffer. +@end defopt +@defopt reftex-bib-year-face +Face name for year in bib selection buffer. +@end defopt +@defopt reftex-bib-title-face +Face name for article title in bib selection buffer. +@end defopt +@defopt reftex-bib-extra-face +Face name for bibliographic information in bib selection buffer. +@end defopt +@defopt reftex-select-mark-face +Face name for marked entries in the selection buffers. +@end defopt +@defopt reftex-index-header-face +Face name for the header of an index buffer. +@end defopt +@defopt reftex-index-section-face +Face name for the start of a new letter section in the index. +@end defopt +@defopt reftex-index-tag-face +Face name for index names (for multiple indices). +@end defopt +@defopt reftex-index-face +Face name for index entries. +@end defopt + +@node Options (Misc), , Options (Fontification), Options +@section Miscellaneous +@cindex Options, misc + +@defopt reftex-extra-bindings +Non-@code{nil} means, make additional key bindings on startup. These +extra bindings are located in the users @samp{C-c letter} +map. @xref{Key Bindings}. +@end defopt + +@defopt reftex-plug-into-AUCTeX +Plug-in flags for AUCTeX interface. This variable is a list of +5 boolean flags. When a flag is non-@code{nil}, @b{Ref@TeX{}} +will + +@example +- supply labels in new sections and environments (flag 1) +- supply arguments for macros like @code{\label} (flag 2) +- supply arguments for macros like @code{\ref} (flag 3) +- supply arguments for macros like @code{\cite} (flag 4) +- supply arguments for macros like @code{\index} (flag 5) +@end example + +You may also set the variable itself to t or nil in order to turn all +options on or off, respectively.@* +Supplying labels in new sections and environments applies when creating +sections with @kbd{C-c C-s} and environments with @kbd{C-c C-e}.@* +Supplying macro arguments applies when you insert such a macro +interactively with @kbd{C-c @key{RET}}.@* +See the AUCTeX documentation for more information. +@end defopt + +@defopt reftex-revisit-to-follow +Non-@code{nil} means, follow-mode will revisit files if necessary. +When nil, follow-mode will be suspended for stuff in unvisited files. +@end defopt + +@defopt reftex-allow-detached-macro-args +Non-@code{nil} means, allow arguments of macros to be detached by +whitespace. When this is @code{t}, the @samp{aaa} in @w{@samp{\bbb +[xxx] @{aaa@}}} will be considered an argument of @code{\bb}. Note that +this will be the case even if @code{\bb} is defined with zero or one +argument. +@end defopt + +@node Keymaps and Hooks, Changes, Options, Top +@section Keymaps and Hooks +@cindex Keymaps + +@b{Ref@TeX{}} has the usual general keymap and load-- and mode-hook. + +@deffn Keymap reftex-mode-map +The keymap for @b{Ref@TeX{}} mode. +@end deffn + +@deffn {Normal Hook} reftex-load-hook +Normal hook which is being run when loading @file{reftex.el}. +@end deffn + +@deffn {Normal Hook} reftex-mode-hook +Normal hook which is being run when turning on @b{Ref@TeX{}} mode. +@end deffn + +Furthermore, the 4 modes used for referencing labels, creating +citations, the table of contents buffer and the phrases buffer have +their own keymaps and mode hooks. See the respective sections. There +are many more hooks which are described in the relevant sections about +options for a specific part of @b{Ref@TeX{}}. + +@node Changes, GNU Free Documentation License, Keymaps and Hooks, Top +@chapter Changes +@cindex Changes + +Here is a list of recent changes to @b{Ref@TeX{}}. + +@noindent @b{Version 4.28} +@itemize @bullet +@item Support for the Jurabib package. +@item Improvements when selecting several items in a selection buffer. +@end itemize + +@noindent @b{Version 4.26} +@itemize @bullet +@item +Support for global incremental search. +@item +Some improvements for XEmacs compatibility. +@end itemize + +@noindent @b{Version 4.25} +@itemize @bullet +@item +Fixed bug with @samp{%F} in a label prefix. Added new escapes +@samp{%m} and @samp{%M} for mater file name and master directory. +@end itemize + +@noindent @b{Version 4.24} +@itemize @bullet +@item +Inserting citation commands now prompts for optional arguments +when called with a prefix argument. Related new options are +@code{reftex-cite-prompt-optional-args} and +@code{reftex-cite-cleanup-optional-args}. +@item +New option @code{reftex-trust-label-prefix}. Configure this variable +if you'd like RefTeX to base its classification of labels on prefixes. +This can speed-up document parsing, but may in some cases reduce the +quality of the context used by RefTeX to describe a label. +@item +Fixed bug in @code{reftex-create-bibtex-file} when @code{reftex-comment-citations} +is non-nil. +@item +Fixed bugs in indexing: Case-sensitive search, quotes before and/or +after words. Disabled indexing in comment lines. +@end itemize + +@noindent @b{Version 4.22} +@itemize @bullet +@item +New command @code{reftex-create-bibtex-file} to create a new database +with all entries referenced in the current document. +@item +New keys @kbd{e} and @kbd{E} allow to produce a BibTeX database file +from entries marked in a citation selection buffer. +@end itemize + +@noindent @b{Version 4.21} +@itemize @bullet +@item +Renaming labels from the toc buffer with key @kbd{M-%}. +@end itemize + +@noindent @b{Version 4.20} +@itemize @bullet +@item +Structure editing capabilities. The command keys @kbd{<} and @kbd{>} in +the TOC buffer promote/demote the section at point or all sections in +the current region. +@item +New option @code{reftex-toc-split-windows-fraction} to set the size of +the window used by the TOC. This makes the old variable +@code{reftex-toc-split-windows-horizontally-fraction} obsolete. +@item +A dedicated frame can show the TOC with the current section +always automatically highlighted. The frame is created and +deleted from the toc buffer with the @kbd{d} key. +@end itemize + +@noindent @b{Version 4.19} +@itemize @bullet +@item +New command `reftex-toc-recenter' (@kbd{C-c -}) which shows the current +section in the TOC buffer without selecting the TOC window. +@item +Recentering happens automatically in idle time when the option +@code{reftex-auto-recenter-toc} is turned on. +@item +Fixed several bugs related to automatic cursor positioning in the TOC +buffer. +@item +The highlight in the TOC buffer stays when the focus moves to a +different window. +@item +New command `reftex-goto-label'. +@item +Part numbers are no longer included in chapter numbers, and a new +part does not reset the chapter counter. See new option +@code{reftex-part-resets-chapter}. +@end itemize + +@noindent @b{Version 4.18} +@itemize @bullet +@item +@code{reftex-citation} uses the word before the cursor as a default +search string. +@item +Simplified several regular expressions for speed. +@item +Better support for chapterbib. +@end itemize + +@noindent @b{Version 4.17} +@itemize @bullet +@item +The toc window can be split off horizontally. See new options +@code{reftex-toc-split-windows-horizontally}, +@code{reftex-toc-split-windows-horizontally-fraction}. +@item +It is possible to specify a function which verifies an index match +during global indexing. See new option @code{reftex-index-verify-function}. +@item +The macros which input a file in LaTeX (like \input, \include) can +be configured. See new option @code{reftex-include-file-commands}. +@item +The macros which specify the bibliography file (like \bibliography) can +be configured. See new option @code{reftex-bibliography-commands}. +@item +The regular expression used to search for the \bibliography macro has +been relaxed to allow for @samp{@{\bibliography@{...@}@}} needed by +chapterbib. +@item +Small bug fixes. +@end itemize + +@noindent @b{Version 4.15} +@itemize @bullet +@item +Fixed bug with parsing of BibTeX files, when fields contain quotes or +unmatched parenthesis. +@item +Small bug fixes. +@item +Improved interaction with Emacs LaTeX mode. +@end itemize + +@noindent @b{Version 4.12} +@itemize @bullet +@item +Support for @file{bibentry} citation style. +@end itemize + +@noindent @b{Version 4.11} +@itemize @bullet +@item +Fixed bug which would parse @samp{\Section} just like @samp{\section}. +@end itemize + +@noindent @b{Version 4.10} +@itemize @bullet +@item +Renamed @file{reftex-vcr.el} to @file{reftex-dcr.el} because of conflict +with @file{reftex-vars.el} on DOS machines. +@item +New options @code{reftex-parse-file-extension} and +@code{reftex-index-phrase-file-extension}. +@end itemize + +@noindent [.....] +@ignore +@noindent @b{Version 4.09} +@itemize @bullet +@item +New option @code{reftex-toc-max-level} to limit the depth of the toc. +New key binding @kbd{t} in the @file{*toc*} buffer to change this +setting. +@item +RefTeX maintains an @file{Index Phrases} file in which phrases can be +collected. When the document is ready, RefTeX can search all +these phrases and assist indexing all matches. +@item +The variables @code{reftex-index-macros} and +@code{reftex-index-default-macro} have changed their syntax slightly. +The @var{repeat} parameter has move from the latter to the former. +Also calls to @code{reftex-add-index-macros} from AUCTeX style files +need to be adapted. +@item +The variable @code{reftex-section-levels} no longer contains the +default stuff which has been moved to a constant. +@item +Environments like theorems can be placed into the TOC by putting +entries for @samp{"begin@{theorem@}"} in +@code{reftex-setion-levels}. +@end itemize + +@noindent @b{Version 4.06} +@itemize @bullet +@item +@code{reftex-section-levels} can contain a function to compute the level +of a sectioning command. +@item +Multiple @code{thebibliography} environments recognized. +@end itemize + +@noindent @b{Version 4.04} +@itemize @bullet +@item +New option @code{reftex-index-default-tag} implements a default for queries. +@end itemize + +@noindent @b{Version 4.02} +@itemize @bullet +@item +macros ending in @samp{refrange} are considered to contain references. +@item +Index entries made with @code{reftex-index-selection-or-word} in TeX +math mode automatically get enclosing @samp{$} to preserve math mode. See +new option @code{reftex-index-math-format}. Requires AUCTeX. +@end itemize + +@noindent @b{Version 4.01} +@itemize @bullet +@item +New command @code{reftex-index-globally} to index a word in many +places in the document. Also available from the index buffer with +@kbd{&}. +@item +The first item in a @code{reftex-label-alist} entry may now also be a parser +function to do non-standard parsing. +@item +@code{reftex-auto-view-crossref} no longer interferes with +@code{pop-up-frames} (patch from Stefan Monnier). +@end itemize + +@noindent @b{Version 4.00} +@itemize @bullet +@item +RefTeX has been split into several smaller files which are autoloaded on +demand. +@item +Index support, along with many new options. +@item +The selection of keys for @code{\ref} and @code{\cite} now allows to +select multiple items by marking entries with the @kbd{m} key. +@item +Fancyref support. +@end itemize + +@noindent @b{Version 3.43} +@itemize @bullet +@item +Viewing cross-references generalized. Now works on @code{\label}, +@code{\ref}, @code{\cite}, @code{\bibitem}, @code{\index}, variations of +these, and from BibTeX buffers. +@item +New option @code{reftex-view-crossref-extra}. +@item +Support for the additional sectioning commands @code{\addchap} and +@code{\addsec} which are defined in the LaTeX KOMA-Script classes. +@item +Files in @code{reftex-default-bibliography} will be searched along +@code{BIBINPUTS} path. +@item +Reading a parse file now checks consistency. +@end itemize + +@noindent @b{Version 3.42} +@itemize @bullet +@item +File search further refined. New option @code{reftex-file-extensions}. +@item +@file{*toc*} buffer can show the file boundaries of a multifile +document, all labels and associated context. New keys @kbd{i}, @kbd{l}, +and @kbd{c}. New options @code{reftex-toc-include-labels}, +@code{reftex-toc-include-context}, +@code{reftex-toc-include-file-boundaries}. +@end itemize + +@noindent @b{Version 3.41} +@itemize @bullet +@item +New options @code{reftex-texpath-environment-variables}, +@code{reftex-use-external-file-finders}, +@code{reftex-external-file-finders}, +@code{reftex-search-unrecursed-path-first}. +@item +@emph{kpathsearch} support. See new options and +@code{reftex-bibpath-environment-variables}. +@end itemize + +@noindent @b{Version 3.38} +@itemize @bullet +@item +@code{reftex-view-crossref} no longer moves to find a macro. Point has +to be on the macro argument. +@end itemize + +@noindent @b{Version 3.36} +@itemize @bullet +@item +New value @code{window} for option @code{reftex-auto-view-crossref}. +@end itemize + +@noindent @b{Version 3.35} +@itemize @bullet +@item +ISO 8859 Latin-1 chars are converted to ASCII to derive better labels. +This takes back the related changes in 3.34 for safety reasons. +@end itemize + +@noindent @b{Version 3.34} +@itemize @bullet +@item +Additional flag in @code{reftex-derive-label-parameters} do make only +lowercase labels (default @code{t}). +@item +All @file{.rel} files have a final newline to avoid queries. +@item +Single byte representations of accented European letters (ISO-8859-1) +are now valid in labels. +@end itemize + +@noindent @b{Version 3.33} +@itemize @bullet +@item +Multiple selection buffers are now hidden buffers (they start with a +SPACE). +@item +Fixed bug with file search when TEXINPUTS environment variable is empty. +@end itemize + +@noindent @b{Version 3.30} +@itemize @bullet +@item +In @code{reftex-citation}, the regular expression used to scan BibTeX +files can be specified using completion on known citation keys. +@item +New keys @kbd{a} and @kbd{A} in BibTeX selection process to cite @emph{all} +entries. +@item +New command @code{reftex-renumber-simple-labels} to renumber simple +labels like @samp{eq:13} sequentially through a document. +@end itemize + +@noindent @b{Version 3.28} +@itemize @bullet +@item +Auto view crossref for XEmacs uses @code{post-command-hook} to restart the +timer, since itimer restart is not reliable. +@item +Option @code{reftex-bibfile-ignore-list} renamed to @code{-regexps}. +@item +Expansion of recursive tex and bib path rewritten. +@item +Fixed problem where @b{Ref@TeX{}} did not scan unsaved buffers. +@item +Fixed bug with section numbering after *-red sections. +@end itemize + +@noindent @b{Version 3.27} +@itemize @bullet +@item +Macros can define @emph{neutral} labels, just like @code{\label} +itself. +@item +New option @code{reftex-allow-detached-macro-args}, default @code{nil}! +@end itemize + +@noindent @b{Version 3.26} +@itemize @bullet +@item +[X]Emacs 19 no longer supported. Use 3.22 for Emacs 19. +@item +New hooks @code{reftex-translate-to-ascii-function}, +@code{reftex-string-to-label-function}. +@item +Made sure automatic crossref display will not visit/scan files. +@end itemize + +@noindent @b{Version 3.25} +@itemize @bullet +@item +Echoing of citation info caches the info for displayed entries. +New option @code{reftex-cache-cite-echo}. +@item +@kbd{M-x reftex-reset-mode} now also removes the file with parsing +info. +@item +Default of @code{reftex-revisit-to-follow} changed to nil. +@end itemize + +@noindent @b{Version 3.24} +@itemize @bullet +@item +New option @code{reftex-revisit-to-echo}. +@item +Interface with X-Symbol (>=2.6) is now complete and stable. +@item +Adapted to new outline, which uses overlays. +@item +File names in @code{\bibliography} may now have the @code{.bib} +extension. +@item +Fixed Bug with parsing "single file" from master file buffer. +@end itemize + +@noindent @b{Version 3.23} +@itemize @bullet +@item +Parse files @file{MASTER.rel} made compatible between Emacs and XEmacs. +@item +@code{kill-emacs-hook} and @code{kill-buffer-hook} now write the parse +file. +@item +The cursor inside a @code{\ref} or @code{\cite} macro can now trigger +automatic display of crossref information in the echo area. See +variable @code{reftex-auto-view-crossref}. +@item +AUCTeX interface updates: +@itemize @minus +@item +AUCTeX 9.9c and later notifies @b{Ref@TeX{}} about new sections. +@item +@b{Ref@TeX{}} notifies AUCTeX about new labels. +@item +@code{TeX-arg-ref} no longer used (introduction was unnecessary). +@item +@code{reftex-arg-label} and @code{reftex-arg-cite} fixed up. +@item +Settings added to @b{Ref@TeX{}} via style files remain local. +@end itemize +@item +Fixed bug with @code{reftex-citation} in non-latex buffers. +@item +Fixed bug with syntax table and context refontification. +@item +Safety-net for name change of @code{font-lock-reference-face}. +@end itemize + +@noindent @b{Version 3.22} +@itemize @bullet +@item +Fixed bug with empty context strings. +@item +@code{reftex-mouse-view-crossref} is now bound by default at +@kbd{S-mouse-2}. +@end itemize + +@noindent @b{Version 3.21} +@itemize @bullet +@item +New options for all faces used by @b{Ref@TeX{}}. They're in the +customization group @code{reftex-fontification-configurations}. +@end itemize + +@noindent @b{Version 3.19} +@itemize @bullet +@item +Fixed bug with AUCTeX @code{TeX-master}. +@end itemize + +@noindent @b{Version 3.18} +@itemize @bullet +@item +The selection now uses a recursive edit, much like minibuffer input. +This removes all restrictions during selection. E.g. you can now +switch buffers at will, use the mouse etc. +@item +New option @code{reftex-highlight-selection}. +@item +@kbd{mouse-2} can be used to select in selection and @file{*toc*} +buffers. +@item +Fixed some problems regarding the interaction with VIPER mode. +@item +Follow-mode is now only used after point motion. +@item +@b{Ref@TeX{}} now finally does not fontify temporary files anymore. +@end itemize + +@noindent @b{Version 3.17} +@itemize @bullet +@item +Additional bindings in selection and @file{*toc*} buffers. @kbd{g} +redefined. +@item +New command @code{reftex-save-all-document-buffers}. +@item +Magic word matching made more intelligent. +@item +Selection process can switch to completion (with @key{TAB}). +@item +@code{\appendix} is now recognized and influences section numbering. +@item +File commentary shortened considerably (use Info documentation). +@item +New option @code{reftex-no-include-regexps} to skip some include files. +@item +New option @code{reftex-revisit-to-follow}. +@end itemize + +@noindent @b{Version 3.16} +@itemize @bullet +@item +New hooks @code{reftex-format-label-function}, +@code{reftex-format-ref-function}, @code{reftex-format-cite-function}. +@item +TeXInfo documentation completed. +@item +Some restrictions in Label inserting and referencing removed. +@item +New variable @code{reftex-default-bibliography}. +@end itemize + +@noindent @b{Version 3.14} +@itemize @bullet +@item +Selection buffers can be kept between selections: this is faster. +See new variable @code{reftex-use-multiple-selection-buffers}. +@item +Prefix interpretation of reftex-view-crossref changed. +@item +Support for the @code{varioref} package (@kbd{v} key in selection +buffer). +@end itemize + +@noindent @b{Version 3.12} +@itemize @bullet +@item +There are 3 new keymaps for customization: @code{reftex-toc-map}, +@code{reftex-select-label-map}, @code{reftex-select-bib-map}. +@item +Refontification uses more standard font-lock stuff. +@item +When no BibTeX database files are specified, citations can also use +@code{\bibitem} entries from a @code{thebibliography} environment. +@end itemize + +@noindent @b{Version 3.11} +@itemize @bullet +@item +Fixed bug which led to naked label in (e.g.) footnotes. +@item +Added scroll-other-window functions to RefTeX-Select. +@end itemize + +@noindent @b{Version 3.10} +@itemize @bullet +@item +Fixed a bug which made reftex 3.07 fail on [X]Emacs version 19. +@item +Removed unimportant code which caused OS/2 Emacs to crash. +@item +All customization variables now accessible from menu. +@end itemize + +@noindent @b{Version 3.07} +@itemize @bullet +@item +@code{Ref} menu improved. +@end itemize + +@noindent @b{Version 3.05} +@itemize @bullet +@item +Compatibility code now first checks for XEmacs feature. +@end itemize + +@noindent @b{Version 3.04} +@itemize @bullet +@item +Fixed BUG in the @emph{xr} support. +@end itemize + +@noindent @b{Version 3.03} +@itemize @bullet +@item +Support for the LaTeX package @code{xr}, for inter-document +references. +@item +A few (minor) Mule-related changes. +@item +Fixed bug which could cause @emph{huge} @file{.rel} files. +@item +Search for input and @file{.bib} files with recursive path definitions. +@end itemize + +@noindent @b{Version 3.00} +@itemize @bullet +@item +@b{Ref@TeX{}} should work better for very large projects: +@item +The new parser works without creating a master buffer. +@item +Rescanning can be limited to a part of a multifile document. +@item +Information from the parser can be stored in a file. +@item +@b{Ref@TeX{}} can deal with macros having a naked label as an argument. +@item +Macros may have white space and newlines between arguments. +@item +Multiple identical section headings no longer confuse +@code{reftex-toc}. +@item +@b{Ref@TeX{}} should work correctly in combination with buffer-altering +packages like outline, folding, x-symbol, iso-cvt, isotex, etc. +@item +All labeled environments discussed in @emph{The LaTeX Companion} by +Goossens, Mittelbach & Samarin, Addison-Wesley 1994) are part of +@b{Ref@TeX{}}'s defaults. +@end itemize + +@noindent @b{Version 2.17} +@itemize @bullet +@item +Label prefix expands % escapes with current file name and other stuff. +@item +Citation format now with % escapes. This is not backward +compatible! +@item +TEXINPUTS variable recognized when looking for input files. +@item +Context can be the nth argument of a macro. +@item +Searching in the select buffer is now possible (@kbd{C-s} and +@kbd{C-r}). +@item +Display and derive-label can use two different context methods. +@item +AMSmath @code{xalignat} and @code{xxalignat} added. +@end itemize + +@noindent @b{Version 2.14} +@itemize @bullet +@item +Variable @code{reftex-plug-into-AUCTeX} simplifies cooperation with +AUCTeX. +@end itemize + +@noindent @b{Version 2.11} +@itemize @bullet +@item +Submitted for inclusion to Emacs and XEmacs. +@end itemize + +@noindent @b{Version 2.07} +@itemize @bullet +@item +New functions @code{reftex-search-document}, +@code{reftex-query-replace-document}. +@end itemize + +@noindent @b{Version 2.05} +@itemize @bullet +@item +Support for @file{custom.el}. +@item +New function @code{reftex-grep-document} (thanks to Stephen Eglen). +@end itemize + +@noindent @b{Version 2.03} +@itemize @bullet +@item +@code{figure*}, @code{table*}, @code{sidewaysfigure/table} added to +default environments. +@item +@code{reftex-bibfile-ignore-list} introduced (thanks to Rory Molinari). +@item +New functions @code{reftex-arg-label}, @code{reftex-arg-ref}, +@code{reftex-arg-cite}. +@item +Emacs/XEmacs compatibility reworked. XEmacs 19.15 now is +required. +@item +@code{reftex-add-to-label-alist} (to be called from AUCTeX style +files). +@item +Finding context with a hook function. +@item +Sorting BibTeX entries (new variable: +@code{reftex-sort-bibtex-matches}). +@end itemize + +@noindent @b{Version 2.00} +@itemize @bullet +@item +Labels can be derived from context (default for sections). +@item +Configuration of label insertion and label referencing revised. +@item +Crossref fields in BibTeX database entries. +@item +@code{reftex-toc} introduced (thanks to Stephen Eglen). +@end itemize + +@noindent @b{Version 1.09} +@itemize @bullet +@item +Support for @code{tex-main-file}, an analogue for +@code{TeX-master}. +@item +MS-DOS support. +@end itemize + +@noindent @b{Version 1.07} +@itemize @bullet +@item +@b{Ref@TeX{}} gets its own menu. +@end itemize + +@noindent @b{Version 1.05} +@itemize @bullet +@item +XEmacs port. +@end itemize + +@noindent @b{Version 1.04} +@itemize @bullet +@item +Macros as wrappers, AMSTeX support, delayed context parsing for +new labels. +@end itemize +@end ignore + +@noindent @b{Version 1.00} +@itemize @bullet +@item +released on 7 Jan 1997. +@end itemize + +@node GNU Free Documentation License, Index, Changes, Top +@appendix GNU Free Documentation License +@include doclicense.texi + +@node Index, , GNU Free Documentation License, Top +@unnumbered Index +@printindex cp + +@summarycontents +@contents +@bye + +@ignore + arch-tag: 1e055774-0576-4b1b-b47f-550d0961fd43 +@end ignore