Function: reftex-toc
reftex-toc is an autoloaded, interactive and byte-compiled function
defined in reftex-toc.el.gz.
Signature
(reftex-toc &optional REBUILD REUSE)
Documentation
Show the table of contents for the current document.
When called with a raw C-u (universal-argument) prefix, rescan the document first.
Probably introduced at or before Emacs version 20.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/reftex-toc.el.gz
;;;###autoload
(defun reftex-toc (&optional _rebuild reuse)
;; FIXME: Get rid of the `rebuild' argument.
"Show the table of contents for the current document.
When called with a raw \\[universal-argument] prefix, rescan the document first."
;; The REUSE argument means, search all visible frames for a window
;; displaying the toc window. If yes, reuse this window.
(interactive)
(if (or (not (equal reftex-last-toc-master (reftex-TeX-master-file)))
;; FIXME: use (interactive "P") to receive current-prefix-arg as
;; an argument instead of using the var here, which forces us to set
;; current-prefix-arg in the callers.
current-prefix-arg)
(reftex-erase-buffer "*toc*"))
(setq reftex-last-toc-file (reftex--get-buffer-identifier))
(setq reftex-last-toc-master (reftex-TeX-master-file))
(set-marker reftex-toc-return-marker (point))
;; If follow mode is active, arrange to delay it one command
(if reftex-toc-follow-mode
(setq reftex-toc-follow-mode 1))
(and reftex-toc-include-index-entries
(reftex-ensure-index-support))
(or reftex-support-index
(setq reftex-toc-include-index-entries nil))
;; Ensure access to scanning info and rescan buffer if prefix arg is '(4)
(reftex-access-scan-info current-prefix-arg)
(let* ((this-buf (current-buffer))
(docstruct-symbol reftex-docstruct-symbol)
(xr-data (assq 'xr (symbol-value reftex-docstruct-symbol)))
(xr-alist (cons (cons "" (reftex--get-buffer-identifier))
(nth 1 xr-data)))
(here-I-am (if reftex--rebuilding-toc
(get 'reftex-toc :reftex-data)
(car (reftex-where-am-I))))
(unsplittable (frame-parameter nil 'unsplittable))
offset toc-window)
(if (setq toc-window (get-buffer-window
"*toc*"
(if reuse 'visible)))
(select-window toc-window)
(when (or (not reftex-toc-keep-other-windows)
(< (window-height) (* 2 window-min-height)))
(delete-other-windows))
(setq reftex-last-window-width (window-total-width)
reftex-last-window-height (window-height)) ; remember
(unless unsplittable
(if reftex-toc-split-windows-horizontally
(split-window-right
(floor (* (window-total-width)
reftex-toc-split-windows-fraction)))
(split-window-below
(floor (* (window-height)
reftex-toc-split-windows-fraction)))))
(switch-to-buffer "*toc*"))
(or (eq major-mode 'reftex-toc-mode) (reftex-toc-mode))
(setq-local reftex-docstruct-symbol docstruct-symbol)
(setq reftex-toc-include-labels-indicator
(if (eq reftex-toc-include-labels t)
"ALL"
reftex-toc-include-labels))
(setq reftex-toc-include-index-indicator
(if (eq reftex-toc-include-index-entries t)
"ALL"
reftex-toc-include-index-entries))
(cond
((= (buffer-size) 0)
;; buffer is empty - fill it with the table of contents
(message "Building *toc* buffer...")
(setq buffer-read-only nil)
(insert (format
"TABLE-OF-CONTENTS on %s
SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
------------------------------------------------------------------------------
" (reftex--abbreviate-name reftex-last-toc-master)))
(if reftex-use-fonts
(put-text-property (point-min) (point) 'font-lock-face reftex-toc-header-face))
(cursor-intangible-mode 1)
(add-text-properties (point-min) (point)
'(cursor-intangible t
front-sticky (cursor-intangible)
rear-nonsticky (cursor-intangible)))
(put-text-property (point-min) (1+ (point-min)) 'xr-alist xr-alist)
(setq offset
(reftex-insert-docstruct
this-buf
t ; include TOC
reftex-toc-include-labels
reftex-toc-include-index-entries
reftex-toc-include-file-boundaries
reftex-toc-include-context
nil ; counter
nil ; commented
here-I-am
"" ; xr-prefix
t ; a TOC buffer
))
(run-hooks 'reftex-display-copied-context-hook)
(message "Building *toc* buffer...done.")
(setq buffer-read-only t))
(t
;; Only compute the offset
(setq offset
(or (reftex-get-offset this-buf here-I-am
(if reftex-toc-include-labels " " nil)
t
reftex-toc-include-index-entries
reftex-toc-include-file-boundaries)
(reftex-last-assoc-before-elt
'toc here-I-am
(symbol-value reftex-docstruct-symbol))))
(put 'reftex-toc :reftex-line 3)
(goto-char (point-min))
(forward-line 2)))
;; Find the correct starting point
(reftex-find-start-point (point) offset (get 'reftex-toc :reftex-line))
(setq reftex-last-follow-point (point))))