6.7 Optimizations
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
RefTeX ensure a safe ride for beginners and casual users. However,
when using RefTeX for a large project and/or on a small computer,
there are ways to improve speed or memory usage.
-
Removing Lookup Buffers
RefTeX 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
| (setq reftex-keep-temporary-buffers nil)
|
-
Partial Document Scans
A C-u prefix on the major RefTeX commands reftex-label
(C-u C-c (), reftex-reference
(C-u C-c )),
reftex-citation
(C-u C-c [), reftex-toc
(C-u C-c
=), and reftex-view-crossref
(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. RefTeX can be configured
to do partial scans instead of full ones. C-u re-parsing then
does apply only to the current buffer and files included from it.
Likewise, the 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 C-u C-u as a
prefix, or the capital R key in the menus. To use this feature,
try
| (setq reftex-enable-partial-scans t)
|
-
Saving Parser Information
Even with partial scans enabled, RefTeX 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 ‘MASTER.rel’ is used
for storing information about a document with master file
‘MASTER.tex’. It is written automatically when you kill a buffer
in 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 ‘.emacs’:
| (setq reftex-save-parse-info t)
|
-
Identifying label types by prefix
RefTeX 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 RefTeX 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
| (setq reftex-trust-label-prefix '("fn:" "eq:"))
|
-
Automatic Document Scans
At rare occasions, RefTeX will automatically rescan a part of the
document. If this gets into your way, it can be turned off with
| (setq reftex-allow-automatic-rescan nil)
|
RefTeX 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.
-
Multiple Selection Buffers
Normally, the selection buffer ‘*RefTeX Select*’ is re-created for
every selection process. In documents with very many labels this can
take several seconds. RefTeX 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
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
| (setq reftex-use-multiple-selection-buffers t)
|
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 g key. To get this behavior, use instead
| (setq reftex-use-multiple-selection-buffers t
reftex-auto-update-selection-buffers nil)
|
As a summary, here are the settings I recommend for heavy use of
RefTeX with large documents:
| (setq reftex-enable-partial-scans t
reftex-save-parse-info t
reftex-use-multiple-selection-buffers t)
|
This document was generated by Ralf Angeli on August, 9 2009 using texi2html 1.78.