.emacs.d/site-lisp/db-latex.el

177 lines
5.2 KiB
EmacsLisp
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; db-latex --- TeX and LaTeX specific configuration -*- lexical-binding: t -*-
;;; Commentary:
;;; Code:
;; Setup
(use-package tex
:ensure auctex)
(require 'latex)
(require 'tex-buf)
(require 'reftex)
;; Basic configuration
(TeX-engine-set 'default)
(setq-default TeX-auto-save t
TeX-save-query nil
TeX-parse-self t
TeX-master t
TeX-electric-sub-and-superscript t
TeX-electric-math '("$" . "$")
TeX-electric-escape nil
LaTeX-electric-left-right-brace t
LaTeX-fill-break-at-separators nil)
(add-hook 'LaTeX-mode-hook #'turn-on-flyspell)
(add-hook 'LaTeX-mode-hook #'turn-on-visual-line-mode)
(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook #'outline-minor-mode)
(add-hook 'LaTeX-mode-hook #'page-break-lines-mode)
(add-hook 'LaTeX-mode-hook #'turn-on-reftex)
(put 'TeX-narrow-to-group 'disabled nil)
(put 'LaTeX-narrow-to-environment 'disabled nil)
(setq TeX-fold-math-spec-list '(("" ("le"))
("" ("ge"))
("" ("notin"))))
(setq TeX-source-correlate-start-server nil)
(setq LaTeX-eqnarray-label "eqn:"
LaTeX-equation-label "eqn:"
LaTeX-figure-label "fig:"
LaTeX-table-label "tab:"
TeX-newline-function 'reindent-then-newline-and-indent
LaTeX-section-hook '(LaTeX-section-heading
LaTeX-section-title
LaTeX-section-section
LaTeX-section-label))
(add-hook 'LaTeX-mode-hook '(lambda ()
(TeX-PDF-mode 1)
(TeX-source-correlate-mode 1)
(TeX-fold-mode 1)))
;; PDF Viewer
(add-to-list 'TeX-view-program-selection
'(output-pdf "Evince"))
;; use pdf-tools when loaded
(eval-after-load 'pdf-tools
`(progn
(add-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools"))
(add-to-list 'TeX-after-compilation-finished-functions
#'TeX-revert-document-buffer)))
;; Printer
(add-to-list 'TeX-printer-list '("Remote" "lp-remote %o" "ssh lat lpstat -o"))
(setq TeX-printer-default "Remote")
;; Custom style
(TeX-add-style-hook
"mydefs"
(lambda ()
(TeX-run-style-hooks "etex"
"etoolbox"
"ifthen"
"amsmath"
"amssymb"
"latexsym"
"mathabx"
"stmaryrd"
"verbatim"
"graphicx"
"enumerate"
"array"
"booktabs"
"ulem"
"nicefrac"
"listings"
"microtype"
"tabularx"
"tikz"
"csquotes"
"ntheorem"
"xspace")
(LaTeX-add-environments
'("Exercise" LaTeX-env-label)
'("Theorem" LaTeX-env-label)
'("Proposition" LaTeX-env-label)
'("Lemma" LaTeX-env-label)
'("Corollary" LaTeX-env-label)
'("Remark" LaTeX-env-label)
'("Example" LaTeX-env-label)
'("Definition" LaTeX-env-label)
'("Proof" LaTeX-env-label))
;; https://tex.stackexchange.com/questions/217799/auctex-11-88-bug-on-latex-env-label-cannot-automatically-insert-label
(setf (cadr reftex-insert-label-flags)
(concat (cadr reftex-insert-label-flags) "TLPDRCE"))
(dolist (label-spec '(("Theorem" ?T "thm:" "~\\ref{%s}" t ("Theorem" "Thm.") nil)
("Lemma" ?L "lem:" "~\\ref{%s}" t ("Lemma" "Lem.") nil)
("Proposition" ?P "prop:" "~\\ref{%s}" t ("Proposition" "Prop.") nil)
("Satz" ?T "thm:" "~\\ref{%s}" t ("Satz") nil)
("Definition" ?D "def:" "~\\ref{%s}" t ("Definition" "Def.") nil)
("Remark" ?R "rem:" "~\\ref{%s}" t ("Remark" "Rem.") nil)
("Corollary" ?C "cor:" "~\\ref{%s}" t ("Corollary" "Cor.") nil)
("Example" ?E "expl:" "~\\ref{%s}" t ("Example") nil)))
(add-to-list 'reftex-label-alist label-spec)
(add-to-list 'LaTeX-label-alist (cons (nth 0 label-spec)
(nth 2 label-spec))))))
;; More style definitions
(TeX-add-style-hook
"cleveref"
(lambda ()
(add-to-list 'reftex-ref-style-alist
'("Cleveref" "cleveref"
(("\\cref" ?c) ("\\Cref" ?C)
("\\cpageref" ?d) ("\\Cpageref" ?D))))
(reftex-ref-style-activate "Cleveref")
(TeX-add-symbols
'("cref" TeX-arg-ref)
'("Cref" TeX-arg-ref)
'("cpageref" TeX-arg-ref)
'("Cpageref" TeX-arg-ref))))
;; Language specification
(add-hook 'TeX-language-de-hook
(lambda () (ispell-change-dictionary "de_DE")))
(add-hook 'TeX-language-en-hook
(lambda () (ispell-change-dictionary "en_US")))
;; LaTeXMk
(when (require 'auctex-latexmk nil 'no-error)
(auctex-latexmk-setup)
(setq auctex-latexmk-inherit-TeX-PDF-mode t))
;; End
(provide 'db-latex)
;;; db-latex ends here