blob: e7e79c652c0ad6141ae6067d77b29a2d27dc1822 (
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
(require-package 'auctex)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
;;; Add path for pdflatex.
(setenv "PATH"
(concat
"/usr/texbin" ":"
(getenv "PATH")))
(defun km/org-mode-reftex-setup ()
(define-key org-mode-map (kbd "C-c [") 'reftex-citation))
(add-hook 'org-mode-hook 'km/org-mode-reftex-setup)
(setq reftex-default-bibliography '("refs.bib"))
(defun km/latex-narrow-to-single-tag (&optional tag)
"Narrow region to LaTeX tag.
This is meant for single elements, like \"\\section\". If TAG is
not given, it is taken from the active region."
(interactive)
(save-excursion
(widen)
(let* ((tag (or tag
(buffer-substring-no-properties (mark) (point))))
(tag (if (s-starts-with? "\\" tag)
tag
(concat "\\" tag)))
(beg (progn (end-of-line)
(search-backward tag)))
(end (progn (forward-line 1)
(unless (search-forward tag nil t)
(search-forward "\\end{document}"))
(forward-line -1)
(point))))
(narrow-to-region beg end))))
(defun km/latex-narrow-to-paired-tag (&optional tag)
"Narrow region to LaTeX tag.
This is meant for paired elements, like \"\\begin{document}\". If
TAG is not given, it is taken from the active region."
(interactive)
(save-excursion
(widen)
(let* ((tag (or tag
(buffer-substring-no-properties (mark) (point))))
(beg (progn (end-of-line)
(search-backward (format "\\begin{%s}" tag))))
(end (progn (forward-line 1)
(search-forward (format "\\end{%s}" tag)))))
(narrow-to-region beg end))))
(defun km/latex-narrow-to-document ()
"Narrow region to LaTeX document text.
The point should be beyond \"\\begin{document}\"."
(interactive)
(km/latex-narrow-to-paired-tag "document"))
(defun km/latex-narrow-to-section ()
"Narrow region to current LaTeX section.
The point should be beyond \"\\section\"."
(interactive)
(km/latex-narrow-to-single-tag "section"))
(defun km/latex-find-pdf ()
"Find the PDF file for the current LaTeX file."
(interactive)
(let ((pdf-file (concat (file-name-base (buffer-file-name))
".pdf")))
(unless (file-exists-p pdf-file)
(error "%s does not exist" pdf-file))
(start-process "tex-pdf" nil "xdg-open" pdf-file)))
(eval-after-load 'latex
'(define-key LaTeX-mode-map (kbd "C-c m p") 'km/latex-find-pdf))
(eval-after-load 'reftex
'(diminish 'reftex-mode "Rf"))
(provide 'init-tex)
|