summaryrefslogtreecommitdiff
path: root/lisp/init-tex.el
blob: bbf658d13e75af6b0aaf0b9300d2f20ec618f91f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

(setq reftex-default-bibliography '("refs.bib"))

(setq font-latex-fontify-sectioning 'color
      TeX-electric-math '("$" . "$"))

(put 'LaTeX-narrow-to-environment 'disabled nil)

(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode))

(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook (lambda ()
                             (setq imenu-create-index-function
                                   #'km/latex-imenu-create-index-function)))

(defun km/latex-imenu-create-index-function ()
  ;; See `LaTeX-imenu-create-index-function'.
  (TeX-update-style)
  (let ((sec-re (LaTeX-outline-regexp))
        (title-re "\\*\\{0,1\\}{\\([^}]+\\)}")
        entries)
    (goto-char (point-min))
    (while (re-search-forward sec-re nil t)
      (let ((sec (replace-regexp-in-string
                  "\\\\" "" (match-string-no-properties 0)))
            (title (and (looking-at title-re)
                        (replace-regexp-in-string
                         "\\s-\\s-+" " "
                         (replace-regexp-in-string
                          "\n" "" (match-string-no-properties 1))))))
        (when (> (length title) 45)
          (setf (substring title 21 -21) "..."))
        (push (cons (if title (format "%s (%s)" title sec) sec)
                    (save-excursion (beginning-of-line) (point-marker)))
              entries)))
    (nreverse entries)))

(provide 'init-tex)